Skip to content

Fix release workflow bug #21

Fix release workflow bug

Fix release workflow bug #21

Workflow file for this run

name: Build Rust binary and create release
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-rust-lang/setup-rust-toolchain@v1
with:
toolchain: beta
target: aarch64-apple-darwin
override: true
- name: Build for MacOS
run: cargo build --manifest-path=rust/forevervm/Cargo.toml --bin forevervm --target aarch64-apple-darwin --release
- name: strip binary
run: strip ./rust/target/aarch64-apple-darwin/release/forevervm
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: macos-binary-arm64
path: ./rust/target/aarch64-apple-darwin/release/forevervm
build-macos-x64:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install latest rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: beta
target: x86_64-apple-darwin
override: true
- name: Build for MacOS
run: cargo build --release --manifest-path=rust/forevervm/Cargo.toml --bin forevervm --target x86_64-apple-darwin
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: macos-binary-x64
path: ./rust/target/x86_64-apple-darwin/release/forevervm
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Rust
uses: actions-rust-lang/setup-rust-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
run: cargo build --release --target x86_64-unknown-linux-musl --manifest-path=rust/forevervm/Cargo.toml --bin forevervm
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-binary
path: ./rust/target/x86_64-unknown-linux-musl/release/forevervm
build-linux-arm64:
runs-on: ubuntu-22.04-arm
steps:
- uses: actions/checkout@v2
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
target: aarch64-unknown-linux-musl
override: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y musl-tools gcc-aarch64-linux-gnu musl-dev
- name: Build for Linux
run: cargo build --release --target aarch64-unknown-linux-musl --manifest-path=rust/forevervm/Cargo.toml --bin forevervm
- uses: actions/upload-artifact@v4
with:
name: linux-binary-arm64
path: ./rust/target/aarch64-unknown-linux-musl/release/forevervm
build-windows:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
target: x86_64-pc-windows-gnu
override: true
- name: Install requirements
run: |
sudo apt-get update
sudo apt-get install -y gcc-mingw-w64 g++-mingw-w64-x86-64 nasm
- name: Set NASM path
run: |
echo "AWS_LC_SYS_PREBUILT_NASM=false" >> $GITHUB_ENV
which nasm
- name: Build for Windows
run: cargo build --release --target x86_64-pc-windows-gnu --manifest-path=rust/forevervm/Cargo.toml --bin forevervm
- name: ls
run: ls ./rust/target/x86_64-pc-windows-gnu/release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: windows-binary
path: ./rust/target/x86_64-pc-windows-gnu/release/forevervm.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/forevervm.exe
linux-binary/forevervm
macos-binary-x64/forevervm
macos-binary-arm64/forevervm
linux-binary-arm64/forevervm
- name: ls
run: ls -la
- name: rename and move
run: >
mv windows-binary/forevervm.exe.gz forevervm-win-x64.exe.gz &&
mv linux-binary/forevervm.gz forevervm-linux-x64.gz &&
mv macos-binary-x64/forevervm.gz forevervm-macos-x64.gz &&
mv macos-binary-arm64/forevervm.gz forevervm-macos-arm64.gz &&
mv linux-binary-arm64/forevervm.gz forevervm-linux-arm64.gz
- name: Release
uses: softprops/action-gh-release@v2
with:
name: ${{ github.event.inputs.version }}
draft: true
generate_release_notes: true
tag_name: ${{ github.event.inputs.version }}
files: |
forevervm-win-x64.exe.gz
forevervm-linux-x64.gz
forevervm-macos-x64.gz
forevervm-macos-arm64.gz
forevervm-linux-arm64.gz