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.
89 lines
3.1 KiB
YAML
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"
|