---
name: Build Release Archives
on:
workflow_call: {}
workflow_dispatch: {}
env:
CARGO_TERM_COLOR: always
CARGO_ABOUT_VERSION: '0.9.0'
jobs:
build-doc:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install cargo-about
run: |
version="$CARGO_ABOUT_VERSION"
slug="cargo-about-$version-x86_64-unknown-linux-musl"
wget "https://github.com/EmbarkStudios/cargo-about/releases/download/$version/$slug.tar.gz"
tar -xvf "$slug.tar.gz" --strip-components=1 $slug/cargo-about
mv cargo-about "$HOME/.cargo/bin/"
- name: Generate LICENSES.html
run: make doc/LICENSES.html
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: doc
path: doc
build-binaries-unix:
strategy:
fail-fast: false
matrix:
include:
- { target: aarch64-unknown-linux-musl, runner: ubuntu-24.04 }
- { target: armv7-unknown-linux-musleabihf, runner: ubuntu-24.04 }
- { target: x86_64-unknown-linux-musl, runner: ubuntu-24.04 }
- { target: aarch64-apple-darwin, runner: macos-15 }
- { target: x86_64-apple-darwin, runner: macos-15 }
runs-on: ${{ matrix.runner }}
env:
RUSTFLAGS: -C linker=rust-lld
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download Toolchain
run: |
rustup set profile minimal
rustup toolchain install stable
rustup default stable
rustup target add ${{ matrix.target }}
rustc --version
- name: Build
run: |
bin="target/${{ matrix.target }}/release-opt/xt"
make "$bin"
tar -czvf target.tar.gz "$bin"
- name: Upload Artifact
uses: actions/upload-artifact@v7
with:
name: target-${{ matrix.target }}
path: target.tar.gz
assemble-archives:
needs:
- build-doc
- build-binaries-unix
runs-on: ubuntu-24.04
permissions:
contents: write
id-token: write
attestations: write
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download Artifacts
uses: actions/download-artifact@v8
- name: Assemble Archives
run: |
for targetdir in ./target-*; do
tar -xvf $targetdir/target.tar.gz
make dist/xt-${targetdir#./target-}.tar.gz
done
(cd dist && sha256sum xt-*.tar.gz | tee SHA256SUMS)
- name: Upload Release Artifacts
uses: actions/upload-artifact@v7
with:
name: release
path: |
dist/xt-*.tar.gz
dist/SHA256SUMS
- name: Create GitHub Attestation
uses: actions/attest-build-provenance@v4
with:
subject-checksums: dist/SHA256SUMS