v1.1.2
Citizen Launcher CI / arch-package (push) Failing after 25s
Citizen Launcher CI / rpm-package (push) Failing after 40s
Citizen Launcher CI / verify (push) Successful in 2m44s

This commit is contained in:
2026-09-01 20:04:15 +02:00
parent 4a48f9b8c5
commit 5aadfd3427
26 changed files with 125 additions and 70 deletions
+5 -5
View File
@@ -25,7 +25,7 @@ jobs:
$SUDO apt-get update
$SUDO apt-get install -y --no-install-recommends python3 python3-yaml dpkg-dev zstd
- name: Full regression suite
run: ./tests/full-verify.sh
run: bash ./tests/full-verify.sh
rpm-package:
runs-on: ubuntu-latest
@@ -37,8 +37,8 @@ jobs:
- name: Build backend and RPM
run: |
set -euo pipefail
./build.sh
./packaging/build-rpm.sh
bash ./build.sh
bash ./packaging/build-rpm.sh
VERSION="$(tr -d '[:space:]' < VERSION)"
rpm -qpi "dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
@@ -52,7 +52,7 @@ jobs:
run: pacman -Syu --noconfirm --needed git go zstd curl python
- uses: actions/checkout@v4
- name: Build backend
run: ./build.sh
run: bash ./build.sh
- name: Build pacman package as unprivileged user
shell: bash
run: |
@@ -60,5 +60,5 @@ jobs:
VERSION="$(tr -d '[:space:]' < VERSION)"
useradd -m builder
chown -R builder:builder "$WORKSPACE"
su builder -s /bin/bash -c "cd '$WORKSPACE' && ./packaging/build-arch.sh"
su builder -s /bin/bash -c "cd '$WORKSPACE' && bash ./packaging/build-arch.sh"
test -s "dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
+12 -12
View File
@@ -32,7 +32,7 @@ jobs:
run: |
set -euo pipefail
VERSION="$(tr -d '[:space:]' < VERSION)"
./scripts/gitea-release.sh ensure \
bash ./scripts/gitea-release.sh ensure \
"$TAG_NAME" \
"Citizen Launcher ${VERSION}" \
RELEASE_NOTES.md \
@@ -58,14 +58,14 @@ jobs:
$SUDO apt-get update
$SUDO apt-get install -y --no-install-recommends python3 python3-yaml dpkg-dev zstd curl
- name: Full regression and package suite
run: ./tests/full-verify.sh
run: bash ./tests/full-verify.sh
- name: Upload Debian and generic assets to Gitea
shell: bash
run: |
set -euo pipefail
VERSION="$(tr -d '[:space:]' < VERSION)"
./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher_${VERSION}_amd64.deb"
./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-linux-amd64.tar.gz"
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher_${VERSION}_amd64.deb"
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-linux-amd64.tar.gz"
rpm:
needs: prepare-release
@@ -83,15 +83,15 @@ jobs:
set -euo pipefail
VERSION="$(tr -d '[:space:]' < VERSION)"
test "$TAG_NAME" = "v${VERSION}"
./build.sh
./packaging/build-rpm.sh
bash ./build.sh
bash ./packaging/build-rpm.sh
rpm -qpi "dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
- name: Upload RPM to Gitea
shell: bash
run: |
set -euo pipefail
VERSION="$(tr -d '[:space:]' < VERSION)"
./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
arch:
needs: prepare-release
@@ -110,17 +110,17 @@ jobs:
set -euo pipefail
VERSION="$(tr -d '[:space:]' < VERSION)"
test "$TAG_NAME" = "v${VERSION}"
./build.sh
bash ./build.sh
useradd -m builder
chown -R builder:builder "$WORKSPACE"
su builder -s /bin/bash -c "cd '$WORKSPACE' && CITIZEN_LAUNCHER_RELEASE_REPO='$CITIZEN_LAUNCHER_RELEASE_REPO' ./packaging/build-arch.sh"
su builder -s /bin/bash -c "cd '$WORKSPACE' && CITIZEN_LAUNCHER_RELEASE_REPO='$CITIZEN_LAUNCHER_RELEASE_REPO' bash ./packaging/build-arch.sh"
test -s "dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
- name: Upload Arch package to Gitea
shell: bash
run: |
set -euo pipefail
VERSION="$(tr -d '[:space:]' < VERSION)"
./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
finalize-release:
needs: [deb-and-generic, rpm, arch]
@@ -132,7 +132,7 @@ jobs:
run: |
set -euo pipefail
rm -rf release-assets
./scripts/gitea-release.sh download-assets "$TAG_NAME" release-assets
bash ./scripts/gitea-release.sh download-assets "$TAG_NAME" release-assets
VERSION="$(tr -d '[:space:]' < VERSION)"
test -s "release-assets/citizen-launcher_${VERSION}_amd64.deb"
test -s "release-assets/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
@@ -140,4 +140,4 @@ jobs:
test -s "release-assets/citizen-launcher-${VERSION}-linux-amd64.tar.gz"
(cd release-assets && sha256sum * | LC_ALL=C sort -k2 > SHA256SUMS.txt)
- name: Publish SHA256SUMS on Gitea release
run: ./scripts/gitea-release.sh upload "$TAG_NAME" release-assets/SHA256SUMS.txt
run: bash ./scripts/gitea-release.sh upload "$TAG_NAME" release-assets/SHA256SUMS.txt
+3 -3
View File
@@ -1,6 +1,6 @@
# Gitea Actions setup
Citizen Launcher 1.1.1 uses Gitea Actions natively. Workflows are in `.gitea/workflows/`; the old `.github/workflows/` directory is intentionally absent.
Citizen Launcher 1.1.2 uses Gitea Actions natively. Workflows are in `.gitea/workflows/`; the old `.github/workflows/` directory is intentionally absent.
## Requirements
@@ -26,8 +26,8 @@ If your runner uses a different label, replace `runs-on: ubuntu-latest` in both
Push a version tag matching `VERSION`, for example:
```bash
git tag v1.1.1
git push origin v1.1.1
git tag v1.1.2
git push origin v1.1.2
```
`.gitea/workflows/release.yml` then:
+2 -2
View File
@@ -38,7 +38,7 @@ esac
if $immutable; then
echo "Immutable Linux-Variante erkannt ($id${variant:+/$variant})."
echo "Citizen Launcher wird sicher im Benutzerkonto installiert; das Basis-Image bleibt unangetastet."
exec "$ROOT/install.sh"
exec bash "$ROOT/install.sh"
fi
case "$family" in
@@ -80,4 +80,4 @@ esac
echo "Kein passendes natives Paket im Projektordner gefunden."
echo "Installiere die portable, vollständig updatefähige Benutzer-Version …"
exec "$ROOT/install.sh"
exec bash "$ROOT/install.sh"
+6 -6
View File
@@ -1,4 +1,4 @@
# Citizen Launcher 1.1.1
# Citizen Launcher 1.1.2
Citizen Launcher is a cross-distribution Star Citizen setup, launch, repair and maintenance application for Linux. The same static Go core runs on Debian/Ubuntu, Fedora/RHEL derivatives, Arch derivatives, openSUSE and generic glibc-based desktop Linux. Omarchy support is an optional integration, not a runtime requirement.
@@ -8,7 +8,7 @@ Citizen Launcher is a cross-distribution Star Citizen setup, launch, repair and
The launcher owns the fragile user-space gaming stack so users do not have to pick Wine builds, copy DXVK DLLs or rebuild prefixes by hand. Kernel, GPU driver, firmware and base-distribution upgrades remain owned by the Linux distribution.
The 1.0.1 gaming path was confirmed end-to-end on real hardware: launcher, RSI installation and Star Citizen playability. 1.1.1 keeps that gaming core and adds native multi-distribution packaging/update integration.
The 1.0.1 gaming path was confirmed end-to-end on real hardware: launcher, RSI installation and Star Citizen playability. 1.1.2 keeps that gaming core and adds native multi-distribution packaging/update integration.
## Supported Linux families
@@ -32,25 +32,25 @@ The installer detects the distro family, prefers a native package found in `dist
### Debian / Ubuntu / Mint
```bash
sudo apt install ./dist/citizen-launcher_1.1.1_amd64.deb
sudo apt install ./dist/citizen-launcher_1.1.2_amd64.deb
```
### Fedora / Nobara / RHEL family
```bash
sudo dnf install ./dist/citizen-launcher-1.1.1-1.linux.x86_64.rpm
sudo dnf install ./dist/citizen-launcher-1.1.2-1.linux.x86_64.rpm
```
### openSUSE Tumbleweed / Slowroll
```bash
sudo zypper install ./dist/citizen-launcher-1.1.1-1.linux.x86_64.rpm
sudo zypper install ./dist/citizen-launcher-1.1.2-1.linux.x86_64.rpm
```
### Arch / Manjaro / EndeavourOS / CachyOS / Omarchy
```bash
sudo pacman -U ./dist/citizen-launcher-1.1.1-1-x86_64.pkg.tar.zst
sudo pacman -U ./dist/citizen-launcher-1.1.2-1-x86_64.pkg.tar.zst
```
### Generic / immutable desktop Linux
+9 -2
View File
@@ -1,8 +1,8 @@
# Citizen Launcher 1.1.1
# Citizen Launcher 1.1.2
## Gitea-native CI/CD release
1.1.1 keeps the confirmed playable multi-distribution 1.1.x runtime and migrates the project automation from GitHub Actions to Gitea Actions.
1.1.2 keeps the confirmed playable multi-distribution 1.1.x runtime and hardens the Gitea Actions pipeline introduced in 1.1.1.
### Gitea workflows
@@ -26,3 +26,10 @@ The release flow does not depend on cross-job `upload-artifact` compatibility. E
### Runtime
Wine, DXVK, RSI Launcher setup, hardware checks, single-instance protection, repair, support bundles and the already confirmed playable Star Citizen path are unchanged.
## Gitea CI hardening
- Gitea Actions invokes repository shell scripts explicitly through `bash`.
- Nested test, build and release scripts use the same mode-independent convention.
- Added a regression guard against direct `.sh` execution in the critical CI graph.
- Fixes Gitea/act exit code 126 (`Permission denied`) when checkout files are mode `0644`.
+13 -7
View File
@@ -1,14 +1,14 @@
# Citizen Launcher 1.1.1 – Verification Report
# Citizen Launcher 1.1.2 – Verification Report
Date: 2026-09-01
## Release scope
Citizen Launcher 1.1.1 keeps the confirmed playable 1.1.x multi-distribution gaming core and migrates CI/CD and release publishing to Gitea Actions.
Citizen Launcher 1.1.2 keeps the confirmed playable 1.1.x multi-distribution gaming core and hardens the Gitea-native CI/CD introduced in 1.1.1 against checkout permission differences.
## Automated release gate
The 1.1.1 tree passes the local release gate with:
The 1.1.2 tree passes the local release gate with:
- shell syntax checks for installers, packaging, Gitea release helper and tests
- `gofmt` cleanliness
@@ -27,6 +27,8 @@ The 1.1.1 tree passes the local release gate with:
- static validation of RPM spec and Arch PKGBUILD/package hooks
- multi-distro platform-family and immutable-host regression tests
- native package self-update parser/asset-selection tests for DEB, RPM and pacman formats
- full regression suite repeated successfully after forcing every repository `*.sh` file to mode `0644`; CI does not depend on executable bits
- regression guard rejects direct repository `.sh` execution in Gitea workflow entry points
## Gitea CI/CD design verified
@@ -57,14 +59,18 @@ A separate build check confirmed that a `gitea:https://.../api/v1/repos/owner/re
The current local build environment contains Debian packaging tools, therefore these artifacts can be built and inspected locally:
- `dist/citizen-launcher_1.1.1_amd64.deb`
- `dist/citizen-launcher-1.1.1-linux-amd64.tar.gz`
- `dist/citizen-launcher_1.1.2_amd64.deb`
- `dist/citizen-launcher-1.1.2-linux-amd64.tar.gz`
The local environment does not provide native `rpmbuild` / Arch `makepkg`; the Gitea workflows build those in Fedora and Arch job containers:
- `citizen-launcher-1.1.1-1.linux.x86_64.rpm`
- `citizen-launcher-1.1.1-1-x86_64.pkg.tar.zst`
- `citizen-launcher-1.1.2-1.linux.x86_64.rpm`
- `citizen-launcher-1.1.2-1-x86_64.pkg.tar.zst`
## Gaming-core acceptance
The Star Citizen install/play path is unchanged from the already accepted 1.0.1/1.1.0 line. The CI migration changes release and update plumbing, not Wine/DXVK/RSI launch behavior.
## Checkout permission regression
The complete `tests/full-verify.sh` suite was repeated after forcing every repository `*.sh` file to Unix mode `0644`. It still completed successfully. This reproduces the Gitea/act checkout condition that caused exit code 126 and verifies that CI/CD no longer depends on executable bits for repository shell scripts. Distributed archives still mark shell scripts executable for convenience.
+1 -1
View File
@@ -1 +1 @@
1.1.1
1.1.2
Binary file not shown.
+1 -1
View File
@@ -16,7 +16,7 @@ import (
)
var (
appVersion = "1.1.1"
appVersion = "1.1.2"
releaseRepo = "github:sendnwv/omarchy-sc"
)
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
(cd "$ROOT/backend" && ./build.sh)
(cd "$ROOT/backend" && bash ./build.sh)
echo "Build fertig: backend/bin/citizen-launcher"
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
"$ROOT/install.sh"
bash "$ROOT/install.sh"
command -v omarchy >/dev/null 2>&1 || { echo "Omarchy nicht gefunden; Standalone-Launcher ist trotzdem installiert."; exit 0; }
DEST="$HOME/.config/omarchy/plugins/local.omarchy-citizen"
mkdir -p "$DEST/backend/bin"
+2 -2
View File
@@ -12,7 +12,7 @@ Panel {
property var anchorItem: null
property var hostWidget: null
property string pluginVersion: "1.1.1"
property string pluginVersion: "1.1.2"
property string health: "checking"
property string depsState: "checking"
property string depsMissing: ""
@@ -106,7 +106,7 @@ Panel {
values[lines[i].slice(0, p)] = lines[i].slice(p + 1)
}
pluginVersion = values.plugin_version || "1.1.1"
pluginVersion = values.plugin_version || "1.1.2"
health = values.health || "setup"
depsState = values.deps || "missing"
depsMissing = values.deps_missing || ""
+1 -1
View File
@@ -2,7 +2,7 @@
set -u
PLUGIN_ID="local.omarchy-citizen"
PLUGIN_VERSION="1.1.1"
PLUGIN_VERSION="1.1.2"
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
+1 -1
View File
@@ -2,7 +2,7 @@
"schemaVersion": 1,
"id": "local.omarchy-citizen",
"name": "Citizen Launcher · Omarchy",
"version": "1.1.1",
"version": "1.1.2",
"author": "Community prototype",
"license": "MIT",
"description": "Optional Omarchy bar integration for the distro-neutral Citizen Launcher.",
+5 -5
View File
@@ -1,16 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
"$ROOT/build.sh"
"$ROOT/packaging/build-deb.sh"
"$ROOT/packaging/build-tarball.sh"
bash "$ROOT/build.sh"
bash "$ROOT/packaging/build-deb.sh"
bash "$ROOT/packaging/build-tarball.sh"
if command -v rpmbuild >/dev/null 2>&1; then
"$ROOT/packaging/build-rpm.sh"
bash "$ROOT/packaging/build-rpm.sh"
else
echo "Hinweis: rpmbuild fehlt – RPM wird in Fedora/openSUSE CI gebaut." >&2
fi
if command -v makepkg >/dev/null 2>&1 && [[ $EUID -ne 0 ]]; then
"$ROOT/packaging/build-arch.sh"
bash "$ROOT/packaging/build-arch.sh"
else
echo "Hinweis: makepkg fehlt/Root – Arch-Paket wird in Arch CI gebaut." >&2
fi
+2
View File
@@ -104,5 +104,7 @@ fi
%config(noreplace) %{_sysconfdir}/citizen-launcher/release-repo
%changelog
* Tue Sep 01 2026 Citizen Launcher Project - 1.1.2-1
- Gitea Actions checkout permission hardening
* Tue Sep 01 2026 Citizen Launcher Project - 1.1.1-1
- Multi-distribution native package support
@@ -13,6 +13,6 @@
<url type="homepage">https://github.com/sendnwv/omarchy-sc</url>
<categories><category>Game</category></categories>
<provides><binary>citizen-launcher</binary></provides>
<releases><release version="1.1.1" date="2026-09-01"/><release version="1.0.1" date="2026-08-31"/><release version="1.0.0" date="2026-08-31"/></releases>
<releases><release version="1.1.2" date="2026-09-01"/><release version="1.1.1" date="2026-09-01"/><release version="1.0.1" date="2026-08-31"/><release version="1.0.0" date="2026-08-31"/></releases>
<content_rating type="oars-1.1"/>
</component>
+2
View File
@@ -104,5 +104,7 @@ fi
%config(noreplace) %{_sysconfdir}/citizen-launcher/release-repo
%changelog
* Tue Sep 01 2026 Citizen Launcher Project - 1.1.2-1
- Gitea Actions checkout permission hardening
* Tue Sep 01 2026 Citizen Launcher Project - 1.1.1-1
- Multi-distribution native package support
+5 -4
View File
@@ -1,9 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
"$ROOT/tests/verify.sh"
bash "$ROOT/tests/verify.sh"
bash "$ROOT/tests/mode-independence.sh"
(cd "$ROOT/backend" && go test -race ./...)
"$ROOT/backend/integration-test.sh"
"$ROOT/tests/gitea-release-helper.sh"
"$ROOT/tests/package-verify.sh"
bash "$ROOT/backend/integration-test.sh"
bash "$ROOT/tests/gitea-release-helper.sh"
bash "$ROOT/tests/package-verify.sh"
echo 'Citizen Launcher full verification: OK'
+9 -9
View File
@@ -25,7 +25,7 @@ class H(http.server.BaseHTTPRequestHandler):
return r
def do_GET(self):
path=urllib.parse.urlparse(self.path).path
if path.endswith('/releases/tags/v1.1.1'):
if path.endswith('/releases/tags/v1.1.2'):
if release is None: self.send_error(404); return
self.sendj(200,self.rel()); return
if path.startswith('/download/'):
@@ -78,12 +78,12 @@ export GITEA_API_URL="http://127.0.0.1:${PORT}/api/v1"
export GITEA_REPOSITORY="owner/repo"
export GITEA_TOKEN="test-token"
echo first > "$TMP/citizen-launcher_1.1.1_amd64.deb"
"$ROOT/scripts/gitea-release.sh" ensure v1.1.1 'Citizen Launcher 1.1.1' "$ROOT/RELEASE_NOTES.md" deadbeef
"$ROOT/scripts/gitea-release.sh" ensure v1.1.1 'Citizen Launcher 1.1.1' "$ROOT/RELEASE_NOTES.md" deadbeef
"$ROOT/scripts/gitea-release.sh" upload v1.1.1 "$TMP/citizen-launcher_1.1.1_amd64.deb"
echo replacement > "$TMP/citizen-launcher_1.1.1_amd64.deb"
"$ROOT/scripts/gitea-release.sh" upload v1.1.1 "$TMP/citizen-launcher_1.1.1_amd64.deb"
"$ROOT/scripts/gitea-release.sh" download-assets v1.1.1 "$TMP/download"
cmp "$TMP/citizen-launcher_1.1.1_amd64.deb" "$TMP/download/citizen-launcher_1.1.1_amd64.deb"
echo first > "$TMP/citizen-launcher_1.1.2_amd64.deb"
bash "$ROOT/scripts/gitea-release.sh" ensure v1.1.2 'Citizen Launcher 1.1.2' "$ROOT/RELEASE_NOTES.md" deadbeef
bash "$ROOT/scripts/gitea-release.sh" ensure v1.1.2 'Citizen Launcher 1.1.2' "$ROOT/RELEASE_NOTES.md" deadbeef
bash "$ROOT/scripts/gitea-release.sh" upload v1.1.2 "$TMP/citizen-launcher_1.1.2_amd64.deb"
echo replacement > "$TMP/citizen-launcher_1.1.2_amd64.deb"
bash "$ROOT/scripts/gitea-release.sh" upload v1.1.2 "$TMP/citizen-launcher_1.1.2_amd64.deb"
bash "$ROOT/scripts/gitea-release.sh" download-assets v1.1.2 "$TMP/download"
cmp "$TMP/citizen-launcher_1.1.2_amd64.deb" "$TMP/download/citizen-launcher_1.1.2_amd64.deb"
echo 'Gitea release helper verification: OK'
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
python3 - "$ROOT" <<'PY'
from pathlib import Path
import re, sys
root = Path(sys.argv[1])
check = [
root/'build.sh', root/'install-omarchy.sh', root/'INSTALLIEREN.sh',
root/'tests/full-verify.sh', root/'tests/verify.sh', root/'tests/package-verify.sh',
root/'tests/gitea-release-helper.sh', root/'packaging/build-all.sh',
root/'.gitea/workflows/ci.yml', root/'.gitea/workflows/release.yml',
]
for p in check:
text = p.read_text()
bad = []
for lineno, line in enumerate(text.splitlines(), 1):
stripped = line.strip()
if stripped.startswith('#') or stripped.endswith('\\') or stripped.endswith('; do'):
continue
# Direct ./script.sh command (workflow or shell command) without an interpreter.
if re.search(r'(^|[;&|]\s*|run:\s*)\./[^\s"\x27]+\.sh(?:\s|$)', stripped):
bad.append((lineno, stripped))
# Direct "$ROOT/path/script.sh" command at start of a shell line.
if re.search(r'^"?\$ROOT/[^"\s]+\.sh"?(?:\s|$)', stripped):
bad.append((lineno, stripped))
if bad:
raise SystemExit(f'direct shell execution remains in {p}: {bad}')
print('Mode-independent shell invocation: OK')
PY
+4 -4
View File
@@ -4,8 +4,8 @@ ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
VERSION="$(tr -d '[:space:]' < "$ROOT/VERSION")"
rm -rf "$ROOT/dist"
mkdir -p "$ROOT/dist"
"$ROOT/packaging/build-deb.sh"
"$ROOT/packaging/build-tarball.sh"
bash "$ROOT/packaging/build-deb.sh"
bash "$ROOT/packaging/build-tarball.sh"
DEB="$ROOT/dist/citizen-launcher_${VERSION}_amd64.deb"
TAR="$ROOT/dist/citizen-launcher-${VERSION}-linux-amd64.tar.gz"
[[ -s "$DEB" && -s "$TAR" ]]
@@ -45,14 +45,14 @@ grep -q "'x86_64'" "$ROOT/packaging/arch/PKGBUILD.in"
grep -q 'citizen-launcher-self-update.timer' "$ROOT/packaging/arch/PKGBUILD.in"
if command -v rpmbuild >/dev/null 2>&1; then
"$ROOT/packaging/build-rpm.sh"
bash "$ROOT/packaging/build-rpm.sh"
RPM="$ROOT/dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
[[ -s "$RPM" ]]
rpm -qp --qf '%{NAME}\n%{VERSION}\n%{ARCH}\n' "$RPM" | grep -qx 'citizen-launcher' -m1
fi
if command -v makepkg >/dev/null 2>&1 && [[ $EUID -ne 0 ]]; then
"$ROOT/packaging/build-arch.sh"
bash "$ROOT/packaging/build-arch.sh"
[[ -s "$ROOT/dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst" ]]
fi
+8 -2
View File
@@ -5,11 +5,11 @@ for f in \
"$ROOT/install.sh" "$ROOT/uninstall.sh" "$ROOT/install-omarchy.sh" "$ROOT/INSTALLIEREN.sh" \
"$ROOT/build.sh" "$ROOT/packaging/build-deb.sh" "$ROOT/packaging/build-rpm.sh" \
"$ROOT/packaging/build-arch.sh" "$ROOT/packaging/build-tarball.sh" "$ROOT/packaging/build-all.sh" \
"$ROOT/scripts/gitea-release.sh" "$ROOT/tests/gitea-release-helper.sh"; do
"$ROOT/scripts/gitea-release.sh" "$ROOT/tests/gitea-release-helper.sh" "$ROOT/tests/mode-independence.sh"; do
bash -n "$f"
done
(cd "$ROOT/backend" && gofmt -w cmd/citizen-launcher && go test ./... && go vet ./...)
"$ROOT/build.sh"
bash "$ROOT/build.sh"
[[ "$("$ROOT/backend/bin/citizen-launcher" --version)" == "$(tr -d '[:space:]' < "$ROOT/VERSION")" ]]
[[ ! -n "$(gofmt -l "$ROOT/backend/cmd/citizen-launcher")" ]]
python3 - <<'PY' "$ROOT"
@@ -22,6 +22,12 @@ release=(root/'.gitea/workflows/release.yml').read_text()
assert 'gh release' not in release
assert 'gitea.api_url' in release and 'gitea.token' in release
assert 'actions/upload-artifact' not in release and 'actions/download-artifact' not in release
import re
for wf in [root/'.gitea/workflows/ci.yml', root/'.gitea/workflows/release.yml']:
text=wf.read_text()
bad=re.findall(r'(?m)^\s*(?:run:\s*)?(\./[^\s]+\.sh)(?:\s|$)', text)
assert not bad, f'workflow executes shell script directly: {wf}: {bad}'
print('Gitea workflow yaml: OK')
PY
echo 'Citizen Launcher verification: OK'