Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build improvements #13

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 62 additions & 12 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
name: Build and upload assets
on:
release:
types: [published]
types: [ published ]

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-latest, windows-latest, macos-latest]
name: Building on ${{ matrix.os }}
include:
- os: ubuntu-20.04
TARGET: linux-gnu/amd64
- os: ubuntu-latest
TARGET: linux-musl/amd64
- os: ubuntu-latest
TARGET: linux-gnu/aarch64
- os: ubuntu-latest
TARGET: android/aarch64
- os: windows-latest
TARGET: windows-msvc/amd64
- os: macos-latest
TARGET: macos/amd64
- os: macos-latest
TARGET: macos/aarch64
name: Build on ${{ matrix.TARGET }}
steps:

- name: Checkout sources
uses: actions/checkout@v4

- name: Install toolchain
id: rust-toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Install protoc
uses: taiki-e/install-action@v2
Expand All @@ -31,8 +41,9 @@ jobs:
run: mkdir bin

- name: Build on Linux GNU
if: matrix.os == 'ubuntu-20.04'
if: matrix.TARGET == 'linux-gnu/amd64'
run: |
rustup target add x86_64-unknown-linux-gnu
cargo build --target=x86_64-unknown-linux-gnu --release
archive="bin/spectre-miner-${{ github.event.release.tag_name }}-linux-gnu-amd64.zip"
asset_name="spectre-miner-${{ github.event.release.tag_name }}-linux-gnu-amd64"
Expand Down Expand Up @@ -62,7 +73,7 @@ jobs:
rm ./bin/${asset_name}

- name: Build on Linux musl
if: matrix.os == 'ubuntu-latest'
if: matrix.TARGET == 'linux-musl/amd64'
run: |
sudo apt-get install -y musl-tools
rustup target add x86_64-unknown-linux-musl
Expand All @@ -74,10 +85,48 @@ jobs:
zip -r "${archive}" ./bin/${asset_name}
rm ./bin/${asset_name}

- name: Build on Linux for linux-gnu/aarch64
if: matrix.TARGET == 'linux-gnu/aarch64'
env:
TARGET_CC: aarch64-linux-gnu-gcc
TARGET_CXX: aarch64-linux-gnu-g++
RUSTFLAGS: -C linker=aarch64-linux-gnu-gcc
run: |
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
rustup target add aarch64-unknown-linux-gnu
cargo build --target=aarch64-unknown-linux-gnu --release
archive="bin/spectre-miner-${{ github.event.release.tag_name }}-linux-gnu-arm64.zip"
asset_name="spectre-miner-${{ github.event.release.tag_name }}-linux-gnu-arm64"
mv ./target/aarch64-unknown-linux-gnu/release/spectre-miner ./bin/${asset_name}
zip -r "${archive}" ./bin/${asset_name}
rm ./bin/${asset_name}

- name: Build for Android ARM64
if: matrix.TARGET == 'android/aarch64'
env:
TARGET_CC: aarch64-linux-android21-clang
TARGET_CXX: aarch64-linux-android21-clang++
RUSTFLAGS: -C linker=aarch64-linux-android21-clang
run: |
curl -sSL https://dl.google.com/android/repository/android-ndk-r27c-linux.zip -o android-ndk.zip
unzip android-ndk.zip -d $HOME
export ANDROID_NDK_HOME=$HOME/android-ndk-r27c
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH

rustup target add aarch64-linux-android
cargo build --target=aarch64-linux-android --release

archive="bin/spectre-miner-${{ github.event.release.tag_name }}-android-arm64.zip"
asset_name="spectre-miner-${{ github.event.release.tag_name }}-android-arm64"
mv ./target/aarch64-linux-android/release/spectre-miner ./bin/${asset_name}
zip -r "${archive}" ./bin/${asset_name}
rm ./bin/${asset_name}

- name: Build on Windows
if: matrix.os == 'windows-latest'
if: matrix.TARGET == 'windows-msvc/amd64'
shell: bash
run: |
rustup target add x86_64-pc-windows-msvc
cargo build --target=x86_64-pc-windows-msvc --release
archive="bin/spectre-miner-${{ github.event.release.tag_name }}-win64-amd64.zip"
asset_name="spectre-miner-${{ github.event.release.tag_name }}-win64-amd64.exe"
Expand All @@ -86,7 +135,7 @@ jobs:
rm ./bin/${asset_name}

- name: Build on MacOS for x86_64
if: matrix.os == 'macos-latest'
if: matrix.TARGET == 'macos/amd64'
run: |
rustup target add x86_64-apple-darwin
cargo build --target=x86_64-apple-darwin --release
Expand All @@ -97,8 +146,9 @@ jobs:
rm ./bin/${asset_name}

- name: Build on MacOS for M1/2
if: matrix.os == 'macos-latest'
if: matrix.TARGET == 'macos/aarch64'
run: |
rustup target add aarch64-apple-darwin
cargo build --target=aarch64-apple-darwin --release
archive="bin/spectre-miner-${{ github.event.release.tag_name }}-osx-aarch64.zip"
asset_name="spectre-miner-${{ github.event.release.tag_name }}-osx-aarch64"
Expand Down
Loading