name: Release
on:
push:
tags: ['v*']
permissions:
contents: write
jobs:
build-linux:
name: Build (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- run: cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: xd-x86_64-unknown-linux-gnu
path: target/release/xd
if-no-files-found: error
build-macos:
name: Build (macOS)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- run: cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: xd-x86_64-apple-darwin
path: target/release/xd
if-no-files-found: error
build-windows:
name: Build (Windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- run: cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: xd-x86_64-pc-windows-msvc
path: target/release/xd.exe
if-no-files-found: error
release:
name: Release to GitHub
needs: [build-linux, build-macos, build-windows]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- uses: actions/download-artifact@v4
with:
path: artifacts
- name: Prepare release files
run: |
mkdir -p release
cp artifacts/xd-x86_64-unknown-linux-gnu/xd release/xd-x86_64-unknown-linux-gnu
cp artifacts/xd-x86_64-apple-darwin/xd release/xd-x86_64-apple-darwin
cp artifacts/xd-x86_64-pc-windows-msvc/xd.exe release/xd-x86_64-pc-windows-msvc.exe
# Generate checksums
cd release
sha256sum * > SHA256SUMS
- uses: softprops/action-gh-release@v2
with:
files: release/*
generate_release_notes: true
draft: false
prerelease: false