Files
bass-foundry/.gitea/workflows/release.yml
T
nvrl abd37fd4fe ci: cache Rust toolchain, registry and build directories
Every Rust job restores the stable toolchain, Cargo registry and its own
target directories from the runner cache. Keys combine the ISO week and
all Cargo.lock files, so dependencies are reused across pushes while
stale build output and old toolchains expire weekly. Release jobs keep
separate entries per plugin.
2026-11-06 01:43:17 +01:00

89 lines
3.1 KiB
YAML

name: Independent plugin release
on:
push:
tags: ["rivet-v*", "patina-v*"]
permissions:
contents: read
env:
CARGO_HOME: ${{ gitea.workspace }}/.cargo-ci
RUSTUP_HOME: ${{ gitea.workspace }}/.rustup-ci
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: "0"
RELEASE_REF: ${{ gitea.ref }}
jobs:
plan:
runs-on: ubuntu-latest
container: node:22-bookworm
outputs:
plugin: ${{ steps.metadata.outputs.plugin }}
version: ${{ steps.metadata.outputs.version }}
tag: ${{ steps.metadata.outputs.tag }}
archive: ${{ steps.metadata.outputs.archive }}
steps:
- uses: https://github.com/actions/checkout@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
persist-credentials: false
- run: apt-get update && apt-get install -y --no-install-recommends python3
- id: metadata
run: python3 scripts/release.py plan --tag "$RELEASE_REF"
build:
needs: plan
runs-on: ubuntu-latest
container: node:22-bookworm
env:
PLUGIN: ${{ needs.plan.outputs.plugin }}
CARGO_TARGET_DIR: ${{ gitea.workspace }}/target/windows
steps:
- uses: https://github.com/actions/checkout@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
persist-credentials: false
- uses: ./.gitea/actions/setup
with:
windows: "true"
# CARGO_TARGET_DIR holds both the native checks and the Windows build.
# Kept apart from branch builds; a release never reuses preview output.
cache-name: release-${{ needs.plan.outputs.plugin }}
target-paths: target/windows
- run: |
python3 -m unittest discover -s scripts/tests -v
python3 scripts/check-plugin.py --plugin "$PLUGIN"
python3 scripts/build-plugin.py --plugin "$PLUGIN" --target x86_64-pc-windows-gnu
python3 scripts/package-windows.py --plugin "$PLUGIN"
- uses: https://github.com/actions/upload-artifact@v3-node20
with:
name: ${{ needs.plan.outputs.plugin }}-windows-${{ needs.plan.outputs.version }}
path: |
dist/${{ needs.plan.outputs.archive }}
dist/${{ needs.plan.outputs.archive }}.sha256
retention-days: 30
publish:
needs: [plan, build]
runs-on: ubuntu-latest
container: node:22-bookworm
permissions:
contents: write
steps:
- uses: https://github.com/actions/checkout@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
persist-credentials: false
- run: apt-get update && apt-get install -y --no-install-recommends python3 ca-certificates
- uses: https://github.com/actions/download-artifact@v3
with:
name: ${{ needs.plan.outputs.plugin }}-windows-${{ needs.plan.outputs.version }}
path: dist
- name: Publish Gitea release and attachments
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_SERVER_URL: ${{ gitea.server_url }}
GITEA_REPOSITORY: ${{ gitea.repository }}
GITEA_REF: ${{ gitea.ref }}
run: python3 scripts/release.py publish --tag "$RELEASE_REF"