name: Release Binaries
on:
push:
tags:
- 'v*'
workflow_dispatch:
env:
BIN_NAME: radr
jobs:
linux:
name: Linux builds
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [
x86_64-unknown-linux-gnu,
aarch64-unknown-linux-gnu,
armv7-unknown-linux-gnueabihf,
i686-unknown-linux-gnu,
x86_64-unknown-linux-musl,
aarch64-unknown-linux-musl,
armv7-unknown-linux-musleabihf,
i686-unknown-linux-musl
]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cross
run: cargo install cross --locked
- name: Build (${{ matrix.target }})
run: cross build --release --target ${{ matrix.target }}
- name: Package artifact
run: |
VERSION="${GITHUB_REF#refs/tags/v}"
TARGET="${{ matrix.target }}"
OUTDIR="dist"
mkdir -p "$OUTDIR/$TARGET"
cp "target/$TARGET/release/${BIN_NAME}" "$OUTDIR/$TARGET/${BIN_NAME}"
cp README.md LICENSE "$OUTDIR/$TARGET"/
(cd "$OUTDIR/$TARGET" && tar -czf "../radr-cli-${VERSION}-${TARGET}.tar.gz" .)
sha256sum "$OUTDIR/radr-cli-${VERSION}-${TARGET}.tar.gz" > "$OUTDIR/radr-cli-${VERSION}-${TARGET}.tar.gz.sha256"
- name: Upload release assets
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/radr-cli-*.tar.gz
dist/radr-cli-*.tar.gz.sha256
windows:
name: Windows builds
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target: [
x86_64-pc-windows-msvc,
i686-pc-windows-msvc,
aarch64-pc-windows-msvc
]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
- name: Build (${{ matrix.target }})
run: cargo build --release --target ${{ matrix.target }}
- name: Package artifact
shell: pwsh
run: |
$version = "$env:GITHUB_REF" -replace 'refs/tags/v',''
$target = "${{ matrix.target }}"
$out = "dist"
New-Item -ItemType Directory -Force -Path "$out/$target" | Out-Null
Copy-Item "target/$target/release/${env:BIN_NAME}.exe" "$out/$target/${env:BIN_NAME}.exe"
Copy-Item README.md "$out/$target/"
Copy-Item LICENSE "$out/$target/"
$zipPath = "$out/radr-cli-$version-$target.zip"
Compress-Archive -Path "$out/$target/*" -DestinationPath $zipPath -Force
Get-FileHash $zipPath -Algorithm SHA256 | ForEach-Object { $_.Hash + " " + $zipPath } | Out-File "$zipPath.sha256" -Encoding ascii
- name: Upload release assets
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/radr-cli-*.zip
dist/radr-cli-*.zip.sha256
macos-x86_64:
name: macOS (x86_64)
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin
- uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --release --target x86_64-apple-darwin
- name: Package artifact
run: |
VERSION="${GITHUB_REF#refs/tags/v}"
TARGET="x86_64-apple-darwin"
OUTDIR="dist"
mkdir -p "$OUTDIR/$TARGET"
cp "target/$TARGET/release/${BIN_NAME}" "$OUTDIR/$TARGET/${BIN_NAME}"
cp README.md LICENSE "$OUTDIR/$TARGET"/
(cd "$OUTDIR/$TARGET" && tar -czf "../radr-cli-${VERSION}-${TARGET}.tar.gz" .)
shasum -a 256 "$OUTDIR/radr-cli-${VERSION}-${TARGET}.tar.gz" > "$OUTDIR/radr-cli-${VERSION}-${TARGET}.tar.gz.sha256"
- name: Upload release assets
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/radr-cli-*.tar.gz
dist/radr-cli-*.tar.gz.sha256
macos-arm64:
name: macOS (arm64)
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --release --target aarch64-apple-darwin
- name: Package artifact
run: |
VERSION="${GITHUB_REF#refs/tags/v}"
TARGET="aarch64-apple-darwin"
OUTDIR="dist"
mkdir -p "$OUTDIR/$TARGET"
cp "target/$TARGET/release/${BIN_NAME}" "$OUTDIR/$TARGET/${BIN_NAME}"
cp README.md LICENSE "$OUTDIR/$TARGET"/
(cd "$OUTDIR/$TARGET" && tar -czf "../radr-cli-${VERSION}-${TARGET}.tar.gz" .)
shasum -a 256 "$OUTDIR/radr-cli-${VERSION}-${TARGET}.tar.gz" > "$OUTDIR/radr-cli-${VERSION}-${TARGET}.tar.gz.sha256"
- name: Upload release assets
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/radr-cli-*.tar.gz
dist/radr-cli-*.tar.gz.sha256