name: release on: push: tags: ['v*'] workflow_dispatch: jobs: release: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: cachix/install-nix-action@v27 with: extra_nix_config: | experimental-features = nix-command flakes # package.sh globs $root/result/lib/*, so the aac package must be linked as ./result. - name: Build native library run: nix build .#aac --print-build-logs - name: Package VPM zip run: nix develop -c ./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: ${{ github.ref_name }} run: | set -euo pipefail manifest=csharp/dev.doloro.animator-as-crab/package.json id=$(jq -r .name "$manifest") version=$(jq -r .version "$manifest") zip="vpm/dist/$id-$version.zip" release=$(curl -fsS -X POST \ -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ "$SERVER/api/v1/repos/$REPO/releases" \ -d "$(jq -n --arg tag "$TAG" --arg name "$id $version" \ '{tag_name: $tag, name: $name, draft: false}')") curl -fsS -X POST \ -H "Authorization: token $TOKEN" \ "$SERVER/api/v1/repos/$REPO/releases/$(jq -r .id <<<"$release")/assets?name=$(basename "$zip")" \ -F "attachment=@$zip" # The index ships the zip's sha256, which only exists after packaging, so it is committed here. - name: Commit updated VPM index env: TOKEN: ${{ secrets.VPM_TOKEN || secrets.GITHUB_TOKEN }} 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 version=$(jq -r .version csharp/dev.doloro.animator-as-crab/package.json) git commit -m "vpm: index for $version" git push "https://x-access-token:$TOKEN@${GITHUB_SERVER_URL#https://}/${GITHUB_REPOSITORY}.git" \ HEAD:main