Skip to content

Release Pipeline

Release Pipeline #22

name: Release Pipeline
on:
workflow_dispatch:
permissions:
contents: write
jobs:
# Build for Windows
build_windows:
runs-on: windows-latest # Use Windows runner
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: clippy
- name: Build for Windows
run: |
cargo build --release
mkdir -p output/win
cp target/release/aid.exe output/win/aid-win.exe
- name: Upload Windows artifact
uses: actions/upload-artifact@v3
with:
name: windows-artifact
path: output/win/aid-win.exe
# Build for Linux x86_64
build_linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: clippy
- name: Build for Linux
run: |
cargo build --release
mkdir -p output/linux
cp target/release/aid output/linux/aid-linux
- name: Upload Linux artifact
uses: actions/upload-artifact@v3
with:
name: linux-artifact
path: output/linux/aid-linux
# Build for macOS x86_64
build_macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: clippy
- name: Build for macOS
run: |
cargo build --release
mkdir -p output/osx
cp target/release/aid output/osx/aid-mac
- name: Upload macOS artifact
uses: actions/upload-artifact@v3
with:
name: macos-artifact
path: output/osx/aid-mac
# Build for macOS ARM (Apple Silicon)
build_macos_arm:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
target: aarch64-apple-darwin # Add macOS ARM target
components: clippy
- name: Build for macOS ARM
run: |
cargo build --release --target aarch64-apple-darwin
mkdir -p output/osx_arm
cp target/aarch64-apple-darwin/release/aid output/osx_arm/aid-mac-arm
- name: Upload macOS ARM artifact
uses: actions/upload-artifact@v3
with:
name: macos-arm-artifact
path: output/osx_arm/aid-mac-arm
# Create a single GitHub release with all artifacts
create_release:
runs-on: ubuntu-latest
needs: [build_windows, build_linux, build_macos, build_macos_arm]
steps:
- name: Checkout code
uses: actions/checkout@v2
# Download artifacts from previous jobs
- name: Download Windows artifact
uses: actions/download-artifact@v3
with:
name: windows-artifact
- name: Download Linux artifact
uses: actions/download-artifact@v3
with:
name: linux-artifact
- name: Download macOS artifact
uses: actions/download-artifact@v3
with:
name: macos-artifact
- name: Download macOS ARM artifact
uses: actions/download-artifact@v3
with:
name: macos-arm-artifact
- name: Generate release tag
id: tag
run: |
VERSION=0.1.6
echo "::set-output name=release_tag::aid-${VERSION}"
- name: Create GitHub release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tag.outputs.release_tag }}
files: |
aid-win.exe
aid-linux
aid-mac
aid-mac-arm