ci: drop the inert GitHub workflows
Gitea ignores `.github/workflows/` entirely once `.gitea/workflows/` is non-empty, so these two files have had no effect since the release workflow landed — and the GitHub repo they targeted is gone (404, suspended account), so they cannot run there either. They were not merely dead: warm-cache.yml's Monday cron kept firing on the Gitea side before `.gitea/` existed, queueing jobs against GitHub-hosted labels (`macos-14`, `windows-2022`, `ubuntu-24.04-arm`) that no self-hosted runner advertises. Those sat queued forever, and its one dispatchable leg failed on `rustup: command not found` — the same bare-image gap the Gitea workflow now provisions around. `.gitea/workflows/release.yml` is the only pipeline; docs/RELEASE.md already documents it as such. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
479fb8cbbd
commit
3e1652ca98
2 files changed
-232
No files matched your search
@@ -1,147 +0,0 @@
|
|||||||
name: Release
|
|
||||||
|
|
||||||
# PRD F8: on tag push v*, build the single-file kigi binary for the five
|
|
||||||
# supported targets, package per-target archives named
|
|
||||||
# kigi-<version>-<target-triple>.{tar.gz|zip} (binary + LICENSE + NOTICE +
|
|
||||||
# THIRD-PARTY-NOTICES), generate SHA256SUMS, and publish everything as a
|
|
||||||
# GitHub Release. install.sh / install.ps1 and the in-app self-updater
|
|
||||||
# (kigi-update) both resolve these exact asset names — keep the naming in
|
|
||||||
# lockstep with auto_update::release_asset_name().
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags: ["v*"]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
env:
|
|
||||||
CARGO_TERM_COLOR: always
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: build (${{ matrix.target }})
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- target: aarch64-apple-darwin
|
|
||||||
os: macos-14
|
|
||||||
# macos-14 runners are arm64; the x86_64 slice is a cross-compile
|
|
||||||
# against the same SDK (macos-13 Intel runners are deprecated).
|
|
||||||
- target: x86_64-apple-darwin
|
|
||||||
os: macos-14
|
|
||||||
- target: x86_64-unknown-linux-gnu
|
|
||||||
os: ubuntu-24.04
|
|
||||||
- target: aarch64-unknown-linux-gnu
|
|
||||||
os: ubuntu-24.04-arm
|
|
||||||
- target: x86_64-pc-windows-msvc
|
|
||||||
os: windows-2022
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Check tag matches workspace version
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
tag_version="${GITHUB_REF_NAME#v}"
|
|
||||||
cargo_version="$(sed -n 's/^version = "\(.*\)"$/\1/p' Cargo.toml | head -n 1)"
|
|
||||||
if [ "$tag_version" != "$cargo_version" ]; then
|
|
||||||
echo "Tag $GITHUB_REF_NAME does not match workspace version $cargo_version" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Install toolchain (rust-toolchain.toml)
|
|
||||||
run: rustup show
|
|
||||||
|
|
||||||
- name: Add build target
|
|
||||||
run: rustup target add ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Install dotslash (protoc launcher)
|
|
||||||
run: cargo install dotslash --locked
|
|
||||||
|
|
||||||
# Windows cannot exec the dotslash launcher directly (no shebang
|
|
||||||
# support → os error 193), and the build script's documented fallback
|
|
||||||
# is a protoc on PATH — install the same version the dotslash file
|
|
||||||
# pins (v29.3).
|
|
||||||
- name: Install protoc (Windows PATH fallback)
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$url = "https://github.com/protocolbuffers/protobuf/releases/download/v29.3/protoc-29.3-win64.zip"
|
|
||||||
Invoke-WebRequest -Uri $url -OutFile protoc.zip
|
|
||||||
Expand-Archive protoc.zip -DestinationPath "$env:USERPROFILE\protoc"
|
|
||||||
Add-Content $env:GITHUB_PATH "$env:USERPROFILE\protoc\bin"
|
|
||||||
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
with:
|
|
||||||
key: ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Build kigi (release-dist)
|
|
||||||
run: cargo build --profile release-dist -p kigi-bin --locked --target ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Package archive (tar.gz)
|
|
||||||
if: runner.os != 'Windows'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
version="${GITHUB_REF_NAME#v}"
|
|
||||||
archive="kigi-${version}-${{ matrix.target }}.tar.gz"
|
|
||||||
staging="$(mktemp -d)"
|
|
||||||
cp "target/${{ matrix.target }}/release-dist/kigi" "$staging/kigi"
|
|
||||||
cp LICENSE "$staging/"
|
|
||||||
[ -f NOTICE ] && cp NOTICE "$staging/"
|
|
||||||
for f in THIRD-PARTY-NOTICES THIRD-PARTY-NOTICES.md; do
|
|
||||||
[ -f "$f" ] && cp "$f" "$staging/"
|
|
||||||
done
|
|
||||||
tar -C "$staging" -czf "$archive" .
|
|
||||||
shasum -a 256 "$archive" || sha256sum "$archive"
|
|
||||||
echo "ARCHIVE=$archive" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
- name: Package archive (zip)
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$version = $env:GITHUB_REF_NAME.TrimStart("v")
|
|
||||||
$archive = "kigi-$version-${{ matrix.target }}.zip"
|
|
||||||
$staging = New-Item -ItemType Directory -Path (Join-Path $env:RUNNER_TEMP "staging")
|
|
||||||
Copy-Item "target/${{ matrix.target }}/release-dist/kigi.exe" (Join-Path $staging "kigi.exe")
|
|
||||||
Copy-Item LICENSE $staging
|
|
||||||
if (Test-Path NOTICE) { Copy-Item NOTICE $staging }
|
|
||||||
foreach ($f in @("THIRD-PARTY-NOTICES", "THIRD-PARTY-NOTICES.md")) {
|
|
||||||
if (Test-Path $f) { Copy-Item $f $staging }
|
|
||||||
}
|
|
||||||
Compress-Archive -Path (Join-Path $staging "*") -DestinationPath $archive
|
|
||||||
Get-FileHash -Algorithm SHA256 $archive
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "ARCHIVE=$archive"
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ${{ env.ARCHIVE }}
|
|
||||||
path: ${{ env.ARCHIVE }}
|
|
||||||
if-no-files-found: error
|
|
||||||
|
|
||||||
release:
|
|
||||||
name: publish GitHub Release
|
|
||||||
needs: build
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
path: dist
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Generate SHA256SUMS
|
|
||||||
working-directory: dist
|
|
||||||
run: |
|
|
||||||
ls -l
|
|
||||||
sha256sum kigi-* > SHA256SUMS
|
|
||||||
cat SHA256SUMS
|
|
||||||
|
|
||||||
- name: Create GitHub Release
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
with:
|
|
||||||
files: dist/*
|
|
||||||
prerelease: ${{ contains(github.ref_name, '-') }}
|
|
||||||
generate_release_notes: true
|
|
||||||
fail_on_unmatched_files: true
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
name: Warm build cache
|
|
||||||
|
|
||||||
# Release builds run on TAG refs, and GitHub Actions cache isolation only
|
|
||||||
# lets a run restore caches created on its OWN ref or the DEFAULT branch.
|
|
||||||
# No workflow ran on `main`, so every release compiled the whole workspace
|
|
||||||
# cold on all five targets (~50 min wall clock, gated by Windows). This
|
|
||||||
# workflow builds the same `release-dist` profile on `main` so tag builds
|
|
||||||
# restore a warm default-branch cache.
|
|
||||||
#
|
|
||||||
# Triggers: dependency-affecting pushes to main (each release's version-bump
|
|
||||||
# commit warms the cache for the NEXT release), a weekly refresh so the
|
|
||||||
# cache never hits GitHub's 7-day unused-eviction, and manual dispatch.
|
|
||||||
#
|
|
||||||
# The setup steps mirror release.yml's build job (toolchain, target,
|
|
||||||
# dotslash/protoc, rust-cache key) — keep them in lockstep, or the cache
|
|
||||||
# key won't match and releases go back to cold builds.
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ["main"]
|
|
||||||
paths:
|
|
||||||
- "Cargo.lock"
|
|
||||||
- "Cargo.toml"
|
|
||||||
- "rust-toolchain.toml"
|
|
||||||
- ".github/workflows/warm-cache.yml"
|
|
||||||
schedule:
|
|
||||||
- cron: "17 5 * * 1"
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
env:
|
|
||||||
CARGO_TERM_COLOR: always
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: warm-cache
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
warm:
|
|
||||||
name: warm (${{ matrix.target }})
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- target: aarch64-apple-darwin
|
|
||||||
os: macos-14
|
|
||||||
- target: x86_64-apple-darwin
|
|
||||||
os: macos-14
|
|
||||||
- target: x86_64-unknown-linux-gnu
|
|
||||||
os: ubuntu-24.04
|
|
||||||
- target: aarch64-unknown-linux-gnu
|
|
||||||
os: ubuntu-24.04-arm
|
|
||||||
- target: x86_64-pc-windows-msvc
|
|
||||||
os: windows-2022
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install toolchain (rust-toolchain.toml)
|
|
||||||
run: rustup show
|
|
||||||
|
|
||||||
- name: Add build target
|
|
||||||
run: rustup target add ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Install dotslash (protoc launcher)
|
|
||||||
run: cargo install dotslash --locked
|
|
||||||
|
|
||||||
- name: Install protoc (Windows PATH fallback)
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$url = "https://github.com/protocolbuffers/protobuf/releases/download/v29.3/protoc-29.3-win64.zip"
|
|
||||||
Invoke-WebRequest -Uri $url -OutFile protoc.zip
|
|
||||||
Expand-Archive protoc.zip -DestinationPath "$env:USERPROFILE\protoc"
|
|
||||||
Add-Content $env:GITHUB_PATH "$env:USERPROFILE\protoc\bin"
|
|
||||||
|
|
||||||
# Same key as release.yml so tag builds restore this cache verbatim.
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
with:
|
|
||||||
key: ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Build kigi (release-dist)
|
|
||||||
run: cargo build --profile release-dist -p kigi-bin --locked --target ${{ matrix.target }}
|
|
||||||
Reference in new issue
Block a user