ci: add continuous release workflow for rolling VPM pre-releases
This commit is contained in:
@@ -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
@@ -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
@@ -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" \
|
||||||
|
|||||||
Reference in New Issue
Block a user