Files
James Maes 4678acf7e7 fix(ci): rebuild workflows for the post-reconstruction workspace
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.
2026-07-29 10:53:15 -05:00

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`.