Skip to content

Build release

Build release #7

Workflow file for this run

name: Build release
on:
release:
types: [published]
permissions:
contents: write
jobs:
build-musl:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [aarch64-unknown-linux-musl, x86_64-unknown-linux-musl]
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Rust
run: |
rustup update
rustup target add ${{ matrix.arch }}
- name: Download musl toolchain
run: |
arch=${{ matrix.arch }}
arch=${arch/-unknown/}
curl -L "https://github.com/lifegpc/musl-toolchain/releases/download/gcc-9.4/${arch}-x86_64-linux-static.7z" -o musl-toolchain.7z
sudo 7z x musl-toolchain.7z -o./musl-toolchain || true
- name: Build project
run: |
arch=${{ matrix.arch }}
arch=${arch/-unknown/}
export PATH="$PWD/musl-toolchain/bin:$PATH"
echo '#!/bin/bash
VALID_ARGS=()
for arg in "$@"; do
if [[ $arg == -m* ]]; then
if [[ ! $arg == *'='* ]] && (( ${#arg} < 5 )); then
continue
fi
fi
VALID_ARGS+=("$arg")
done
exec '"${arch}-cc"' "${VALID_ARGS[@]}"' > "$PWD/${arch}-cc"
chmod +x "$PWD/${arch}-cc"
echo '#!/bin/bash
VALID_ARGS=()
for arg in "$@"; do
if [[ $arg == -m* ]]; then
if [[ ! $arg == *'='* ]] && (( ${#arg} < 5 )); then
continue
fi
fi
VALID_ARGS+=("$arg")
done
exec '"${arch}-g++"' "${VALID_ARGS[@]}"' > "$PWD/${arch}-g++"
chmod +x "$PWD/${arch}-g++"
export CC="$PWD/${arch}-cc"
export CXX="$PWD/${arch}-g++"
export AR="${arch}-ar"
export RUSTFLAGS="-C linker=${CC}"
cargo build --release --target ${{ matrix.arch }}
version=${{ github.event.release.tag_name }}
cd target/${{ matrix.arch }}/release
7z a -mx9 "../../../msg_tool-${version}-${{ matrix.arch }}.zip" "msg_tool"
- name: Upload to release
run: |
version=${{ github.event.release.tag_name }}
gh release upload "${version}" msg_tool-${version}-${{ matrix.arch }}.zip --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-windows:
runs-on: windows-latest
strategy:
matrix:
arch: [aarch64-pc-windows-msvc, x86_64-pc-windows-msvc]
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Rust
run: |
rustup update
rustup target add ${{ matrix.arch }}
- name: Build project
run: |
cargo build --release --target ${{ matrix.arch }}
cd target/${{ matrix.arch }}/release
7z a -mx9 "../../../msg_tool-${{ github.event.release.tag_name }}-${{ matrix.arch }}.zip" "msg_tool.exe" "msg_tool.pdb"
- name: Upload to release
run: gh release upload "${{ github.event.release.tag_name }}" msg_tool-${{ github.event.release.tag_name }}-${{ matrix.arch }}.zip --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}