The CI/release workflows still targeted the archived presentation shells (nuncio-gui, nuncio-tui, nuncio-mcp) and their Tauri/npm toolchain, so every run failed before the engine crates were even built. - ci.yml: run on dev in addition to main, drop the GTK/WebKit/Tauri apt packages (the engine only needs zbus-based keyring and bundled sqlite, both pure-Rust/cc), rely on rust-toolchain.toml instead of dtolnay/rust-toolchain@stable to avoid drift from the pinned 1.97.1 toolchain, and make the coverage job continue-on-error so it stays informational. - release.yml / release-nightly.yml: package only nuncio-cli and nunciod (the shells are gone), and drop the fabricated installer/ Homebrew release notes. - release-desktop.yml: deleted; the Tauri desktop GUI is being rebuilt as a separate client repo and no longer belongs here.
134 lines
5.0 KiB
YAML
134 lines
5.0 KiB
YAML
name: Nuncio Multi-Platform Release Pipeline (Dev, RC, Prod)
|
|
|
|
on:
|
|
# Releases are cut ONLY from version tags (vMAJOR.MINOR.PATCH), per the release
|
|
# policy (no public release until V3). Branch-push and nightly-cron triggers were
|
|
# removed during the pre-alpha rebuild: they ran on every dev push and failed
|
|
# (they build the presentation GUI now archived under _reference/).
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
|
|
jobs:
|
|
build-binaries:
|
|
name: Build ${{ matrix.target }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
artifact_name: nuncio-x86_64-unknown-linux-gnu.tar.gz
|
|
- os: macOS-latest
|
|
target: aarch64-apple-darwin
|
|
artifact_name: nuncio-aarch64-apple-darwin.tar.gz
|
|
- os: macOS-13
|
|
target: x86_64-apple-darwin
|
|
artifact_name: nuncio-x86_64-apple-darwin.tar.gz
|
|
- os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
artifact_name: nuncio-x86_64-pc-windows-msvc.zip
|
|
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Install Rust Toolchain
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: ${{ matrix.target }}
|
|
|
|
- name: Build Production Workspace Binaries
|
|
run: cargo build --workspace --release --target ${{ matrix.target }}
|
|
|
|
- name: Package Linux / macOS Binaries (.tar.gz)
|
|
if: matrix.os != 'windows-latest'
|
|
run: |
|
|
mkdir -p dist
|
|
cp target/${{ matrix.target }}/release/nuncio-cli dist/nuncio-cli
|
|
cp target/${{ matrix.target }}/release/nunciod dist/nunciod
|
|
tar -czf ${{ matrix.artifact_name }} -C dist .
|
|
|
|
- name: Package Windows Binaries (.zip)
|
|
if: matrix.os == 'windows-latest'
|
|
shell: pwsh
|
|
run: |
|
|
New-Item -ItemType Directory -Path dist
|
|
Copy-Item target/${{ matrix.target }}/release/nuncio-cli.exe dist/nuncio-cli.exe
|
|
Copy-Item target/${{ matrix.target }}/release/nunciod.exe dist/nunciod.exe
|
|
Compress-Archive -Path dist/* -DestinationPath ${{ matrix.artifact_name }}
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.target }}
|
|
path: ${{ matrix.artifact_name }}
|
|
|
|
publish-release:
|
|
name: Publish GitHub Release (Dev / RC / Prod)
|
|
needs: build-binaries
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Download All Target Artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: release-artifacts
|
|
|
|
- name: Move Release Files to Root
|
|
run: |
|
|
mkdir -p dist-final
|
|
find release-artifacts -type f -exec cp {} dist-final/ \;
|
|
cd dist-final
|
|
sha256sum * > SHA256SUMS.txt
|
|
|
|
- name: Determine Environment Channel, Tag & Release Name
|
|
id: prep
|
|
run: |
|
|
if [[ "${{ github.ref }}" == refs/heads/dev || "${{ github.event_name }}" == "schedule" ]]; then
|
|
echo "tag_name=dev-nightly" >> $GITHUB_OUTPUT
|
|
echo "release_name=Nuncio Development Nightly ($(date +'%Y-%m-%d'))" >> $GITHUB_OUTPUT
|
|
echo "is_prerelease=true" >> $GITHUB_OUTPUT
|
|
echo "channel=Development (Dev)" >> $GITHUB_OUTPUT
|
|
elif [[ "${{ github.ref }}" == refs/heads/rc || "${{ github.ref }}" == refs/tags/*rc* ]]; then
|
|
echo "tag_name=rc-latest" >> $GITHUB_OUTPUT
|
|
echo "release_name=Nuncio Release Candidate (${{ github.ref_name }})" >> $GITHUB_OUTPUT
|
|
echo "is_prerelease=true" >> $GITHUB_OUTPUT
|
|
echo "channel=Release Candidate (RC)" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "tag_name=${{ github.ref_name }}" >> $GITHUB_OUTPUT
|
|
echo "release_name=Nuncio Release ${{ github.ref_name }}" >> $GITHUB_OUTPUT
|
|
echo "is_prerelease=false" >> $GITHUB_OUTPUT
|
|
echo "channel=Production (Prod GA)" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v3
|
|
with:
|
|
tag_name: ${{ steps.prep.outputs.tag_name }}
|
|
name: ${{ steps.prep.outputs.release_name }}
|
|
prerelease: ${{ steps.prep.outputs.is_prerelease == 'true' }}
|
|
files: dist-final/*
|
|
body: |
|
|
## Nuncio Engine (nunciod + nuncio-cli)
|
|
**Release Channel**: ${{ steps.prep.outputs.channel }}
|
|
|
|
### 📦 Daemon & CLI Archives
|
|
- `nuncio-x86_64-unknown-linux-gnu.tar.gz`
|
|
- `nuncio-aarch64-apple-darwin.tar.gz`
|
|
- `nuncio-x86_64-apple-darwin.tar.gz`
|
|
- `nuncio-x86_64-pc-windows-msvc.zip`
|
|
|
|
### 🚀 Cargo Source
|
|
- `cargo install --git https://github.com/KofTwentyTwo/nuncio.git nuncio-cli nunciod`
|
|
|
|
Verify payload hashes against `SHA256SUMS.txt`.
|