Skip to content

Build Rust binary and create release #78

Build Rust binary and create release

Build Rust binary and create release #78

Workflow file for this run

name: Build Rust binary and create release
# Note: If you add or remove binaries, you should also update the list in releaser/src/check_binaries.rs
on:
workflow_dispatch:
inputs:
version:
description: 'Release Version'
required: true
pull_request:
branches: [ "main" ]
paths:
- ".github/workflows/release.yml"
jobs:
build-macos-arm64:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: beta
target: aarch64-apple-darwin
default: true
override: true
- name: Build for MacOS
uses: actions-rs/cargo@v1
with:
command: build
args: --manifest-path=crates/Cargo.toml --target aarch64-apple-darwin --release
- name: strip binary
run: strip ./crates/target/aarch64-apple-darwin/release/y-sweet
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: macos-binary-arm64
path: ./crates/target/aarch64-apple-darwin/release/y-sweet
build-macos-x64:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: beta
target: x86_64-apple-darwin
default: true
override: true
- name: Build for MacOS
uses: actions-rs/cargo@v1
with:
command: build
args: --release --manifest-path=crates/Cargo.toml --target x86_64-apple-darwin
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: macos-binary-x64
path: ./crates/target/x86_64-apple-darwin/release/y-sweet
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: x86_64-unknown-linux-musl
override: true
- name: Install musl-tools
run: sudo apt-get install -y musl-tools
- name: Build for Linux
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target x86_64-unknown-linux-musl --manifest-path=crates/Cargo.toml
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-binary
path: ./crates/target/x86_64-unknown-linux-musl/release/y-sweet
build-linux-arm64:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: aarch64-unknown-linux-musl
override: true
- name: Install musl-tools
run: sudo apt-get install -y musl-tools
- run: sudo apt-get install gcc-aarch64-linux-gnu
- name: Build for Linux
uses: actions-rs/cargo@v1
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc
CC: aarch64-linux-gnu-gcc
with:
command: build
args: --release --target aarch64-unknown-linux-musl --manifest-path=crates/Cargo.toml
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-binary-arm64
path: ./crates/target/aarch64-unknown-linux-musl/release/y-sweet
build-windows:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: x86_64-pc-windows-gnu
override: true
- name: Install mingw
run: sudo apt-get install -y gcc-mingw-w64
- name: Build for Windows
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target x86_64-pc-windows-gnu --manifest-path=crates/Cargo.toml
- name: ls
run: ls ./crates/target/x86_64-pc-windows-gnu/release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: windows-binary
path: ./crates/target/x86_64-pc-windows-gnu/release/y-sweet.exe
release:
needs: [build-linux, build-macos-arm64, build-macos-x64, build-windows, build-linux-arm64]
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Compress binary
run: >
gzip -9 --keep --force
windows-binary/y-sweet.exe
linux-binary/y-sweet
macos-binary-x64/y-sweet
macos-binary-arm64/y-sweet
linux-binary-arm64/y-sweet
- name: ls
run: ls -la
- name: rename and move
run: >
mv windows-binary/y-sweet.exe.gz y-sweet-win-x64.exe.gz &&
mv linux-binary/y-sweet.gz y-sweet-linux-x64.gz &&
mv macos-binary-x64/y-sweet.gz y-sweet-macos-x64.gz &&
mv macos-binary-arm64/y-sweet.gz y-sweet-macos-arm64.gz &&
mv linux-binary-arm64/y-sweet.gz y-sweet-linux-arm64.gz
- name: Release
uses: softprops/action-gh-release@v1
with:
name: ${{ github.event.inputs.version }}
draft: true
files: |
y-sweet-win-x64.exe.gz
y-sweet-linux-x64.gz
y-sweet-macos-x64.gz
y-sweet-macos-arm64.gz
y-sweet-linux-arm64.gz