debian repo
release / deb (push) Successful in 14s

This commit is contained in:
abrown38 committed 2026-09-30 20:01:10 +00:00
1 parent 8084c39e37
commit 208c81899a
3 files changed
+56 -6

No files matched your search

+26 -1
View File
@@ -27,7 +27,7 @@ jobs:
run: | run: |
SUDO=$(command -v sudo || true) SUDO=$(command -v sudo || true)
$SUDO apt-get update -qq $SUDO apt-get update -qq
$SUDO apt-get install -y -qq make python3 dpkg shellcheck python3-pyflakes $SUDO apt-get install -y -qq make python3 dpkg curl shellcheck python3-pyflakes
- name: Build (make check runs first) - name: Build (make check runs first)
run: make deb run: make deb
@@ -39,3 +39,28 @@ jobs:
# The job's own token; set a RELEASE_TOKEN secret instead if it isn't allowed to write releases # The job's own token; set a RELEASE_TOKEN secret instead if it isn't allowed to write releases
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN || secrets.GITEA_TOKEN }} GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN || secrets.GITEA_TOKEN }}
run: python3 packaging/gitea-release.py "$GITHUB_REF_NAME" build/*.deb run: python3 packaging/gitea-release.py "$GITHUB_REF_NAME" build/*.deb
# Gitea's Debian registry, as an apt repository:
# deb <server>/api/packages/<owner>/debian stable main
- name: Publish to the apt repository
env:
POOL: ${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/debian/pool/stable/main
# The job's own token; set a PACKAGE_TOKEN secret (scope write:package) if it isn't allowed to
TOKEN: ${{ secrets.PACKAGE_TOKEN || secrets.GITEA_TOKEN }}
run: |
deb=$(echo build/*.deb)
upload() {
curl -sS -o response.txt -w '%{http_code}' --user "$GITHUB_ACTOR:$TOKEN" \
--upload-file "$deb" "$POOL/upload"
}
status=$(upload)
if [ "$status" = 409 ]; then
# This version is there already (the tag was pushed again): replace it
curl -sS -f --user "$GITHUB_ACTOR:$TOKEN" -X DELETE \
"$POOL/terraria-server-manager/$(cat VERSION)/all"
status=$(upload)
fi
if [ "$status" != 201 ]; then
echo "upload failed: HTTP $status"; cat response.txt; echo; exit 1
fi
echo "published $(basename "$deb") to $POOL"
+14 -2
View File
@@ -32,7 +32,19 @@ sudo terractl attach calamity
## Install ## Install
Download the `.deb` from the releases page, then: From the apt repository, which also brings updates with `sudo apt upgrade`:
```bash
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://gitea.adbraun.lol/api/packages/adam/debian/repository.key \
-o /etc/apt/keyrings/terraria-server-manager.asc
echo "deb [signed-by=/etc/apt/keyrings/terraria-server-manager.asc] https://gitea.adbraun.lol/api/packages/adam/debian stable main" |
sudo tee /etc/apt/sources.list.d/terraria-server-manager.list
sudo apt update
sudo apt install terraria-server-manager
```
Or download the `.deb` from the releases page, then:
```bash ```bash
sudo apt install ./terraria-server-manager_<version>_all.deb sudo apt install ./terraria-server-manager_<version>_all.deb
@@ -75,7 +87,7 @@ To release, update `VERSION` and `CHANGELOG.md`, commit, and push a matching tag
git tag v$(cat VERSION) && git push origin v$(cat VERSION) git tag v$(cat VERSION) && git push origin v$(cat VERSION)
``` ```
The `release` workflow (`.gitea/workflows/release.yaml`, Gitea Actions) then builds the `.deb` and publishes it as a release, with that version's changelog section as the notes. It needs a runner with the `ubuntu-latest` label. To build a package by hand instead, run `make deb`. The `release` workflow (`.gitea/workflows/release.yaml`, Gitea Actions) then builds the `.deb`, publishes it as a release with that version's changelog section as the notes, and adds it to the apt repository. It needs a runner with the `ubuntu-latest` label. To build a package by hand instead, run `make deb`.
## Disclaimer ## Disclaimer
+16 -3
View File
@@ -100,13 +100,25 @@ The server can write only inside `instances/`. It reads `dist/` but can never ch
## Installation ## Installation
The package works on Debian 12 or newer and Ubuntu 22.04 or newer. The package works on Debian 12 or newer and Ubuntu 22.04 or newer. The easiest way is the apt repository, since `sudo apt upgrade` then keeps it up to date:
```bash
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://gitea.adbraun.lol/api/packages/adam/debian/repository.key \
-o /etc/apt/keyrings/terraria-server-manager.asc
echo "deb [signed-by=/etc/apt/keyrings/terraria-server-manager.asc] https://gitea.adbraun.lol/api/packages/adam/debian stable main" |
sudo tee /etc/apt/sources.list.d/terraria-server-manager.list
sudo apt update
sudo apt install terraria-server-manager
```
The repository is signed; the first two commands fetch its key and let apt trust it for this repository only. Alternatively, download a `.deb` from the releases page and install it directly:
```bash ```bash
sudo apt install ./terraria-server-manager_0.0.9_all.deb sudo apt install ./terraria-server-manager_0.0.9_all.deb
``` ```
Using `apt install ./file.deb` (rather than `dpkg -i`) installs the dependencies automatically. `unzip` is required. `curl` and the ICU library are "recommended", which apt installs by default; they're only needed for tModLoader instances, which crash with `Aborted` without ICU. `polkitd` is also recommended: it lets members of the `terraria` group start and stop servers without `sudo` (see [Permissions](#permissions)). Using `apt install` (rather than `dpkg -i`) installs the dependencies automatically. `unzip` is required. `curl` and the ICU library are "recommended", which apt installs by default; they're only needed for tModLoader instances, which crash with `Aborted` without ICU. `polkitd` is also recommended: it lets members of the `terraria` group start and stop servers without `sudo` (see [Permissions](#permissions)).
Installing the package: Installing the package:
@@ -125,7 +137,8 @@ sudo ufw allow 7777/tcp # example with ufw
### Upgrading the package ### Upgrading the package
```bash ```bash
sudo apt install ./terraria-server-manager_<new-version>_all.deb sudo apt update && sudo apt upgrade # from the apt repository
sudo apt install ./terraria-server-manager_<new-version>_all.deb # or from a downloaded .deb
``` ```
Running servers are not restarted. Each one picks up the new version the next time it starts. Your changes to `/etc/default/terractl` are kept; if the new package also changes that file, dpkg asks which version to keep. Running servers are not restarted. Each one picks up the new version the next time it starts. Your changes to `/etc/default/terractl` are kept; if the new package also changes that file, dpkg asks which version to keep.