ci: add continuous release workflow for rolling VPM pre-releases
ci / Nix flake checks (push) Successful in 8s
continuous / Publish continuous release (push) Successful in 13s

This commit is contained in:
2026-09-19 18:05:39 +01:00
parent d665a01a1f
commit 31affff9dd
3 changed files with 60 additions and 2 deletions
+48
View File
@@ -0,0 +1,48 @@
name: continuous
on:
push:
branches: [main]
workflow_dispatch:
jobs:
continuous:
name: Publish continuous release
runs-on: nix
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Build Rust core
run: nix build .#aac --print-build-logs
- name: Package VPM zip
env:
VPM_VERSION: continuous
VPM_RELEASE_BASE: ${{ github.server_url }}/${{ github.repository }}/releases/download/continuous
run: nix develop -c bash ./vpm/package.sh
- name: Publish release and upload zip
env:
TOKEN: ${{ secrets.VPM_TOKEN || secrets.GITHUB_TOKEN }}
SERVER: ${{ github.server_url }}
REPO: ${{ github.repository }}
TAG: continuous
VPM_VERSION: continuous
run: nix develop -c bash ./vpm/publish.sh
# The index carries the zip's sha256, which only exists after packaging.
- name: Commit updated VPM index
env:
TOKEN: ${{ secrets.VPM_TOKEN || secrets.GITHUB_TOKEN }}
SERVER: ${{ github.server_url }}
REPO: ${{ github.repository }}
run: |
set -euo pipefail
git config user.name gitea-actions
git config user.email actions@git.scug.io
git add vpm/index.json
git diff --cached --quiet && exit 0
git commit -m "vpm: continuous index update"
git push "https://x-access-token:$TOKEN@${SERVER#https://}/${REPO}.git" HEAD:main
+1 -1
View File
@@ -26,7 +26,7 @@ index_url=${VPM_INDEX_URL:-$host/$project/raw/branch/main/vpm/index.json}
release_base=${VPM_RELEASE_BASE:-} release_base=${VPM_RELEASE_BASE:-}
id=$(jq -r .name "$pkg/package.json") id=$(jq -r .name "$pkg/package.json")
version=$(jq -r .version "$pkg/package.json") version=${VPM_VERSION:-$(jq -r .version "$pkg/package.json")}
zip_name="$id-$version.zip" zip_name="$id-$version.zip"
: "${release_base:=$host/$project/releases/download/v$version}" : "${release_base:=$host/$project/releases/download/v$version}"
zip_url="$release_base/$zip_name" zip_url="$release_base/$zip_name"
+11 -1
View File
@@ -14,12 +14,22 @@ root=$(cd "$(dirname "$0")/.." && pwd)
manifest="$root/csharp/dev.doloro.animator-as-crab/package.json" manifest="$root/csharp/dev.doloro.animator-as-crab/package.json"
id=$(jq -r .name "$manifest") id=$(jq -r .name "$manifest")
version=$(jq -r .version "$manifest") version=${VPM_VERSION:-$(jq -r .version "$manifest")}
zip="$root/vpm/dist/$id-$version.zip" zip="$root/vpm/dist/$id-$version.zip"
zip_name=$(basename "$zip") zip_name=$(basename "$zip")
[ -f "$zip" ] || { echo "missing $zip; run package.sh first" >&2; exit 1; } [ -f "$zip" ] || { echo "missing $zip; run package.sh first" >&2; exit 1; }
# Delete existing release with same tag if present (needed for rolling tags like continuous)
existing=$(curl -fsS -H "Authorization: token $TOKEN" \
"$SERVER/api/v1/repos/$REPO/releases/tags/$TAG" 2>/dev/null || true)
if [ -n "$existing" ] && [ "$existing" != 'null' ]; then
existing_id=$(jq -r .id <<<"$existing")
echo "deleting existing release $existing_id for tag $TAG"
curl -fsS -X DELETE -H "Authorization: token $TOKEN" \
"$SERVER/api/v1/repos/$REPO/releases/$existing_id"
fi
release=$(curl -fsS -X POST \ release=$(curl -fsS -X POST \
-H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
"$SERVER/api/v1/repos/$REPO/releases" \ "$SERVER/api/v1/repos/$REPO/releases" \