Files
msg-tool/.github/workflows/release.yml
2026-04-05 14:37:22 +08:00

120 lines
4.2 KiB
YAML

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"
export CC="${arch}-cc"
export HOST_CC="cc"
export CXX="${arch}-g++"
export HOST_CXX="c++"
export AR="${arch}-ar"
export HOST_AR="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-macos:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [aarch64-apple-darwin, x86_64-apple-darwin]
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Rust
run: |
rustup update
rustup target add ${{ matrix.arch }}
- name: Set up Zig
uses: goto-bus-stop/setup-zig@v2
- name: Install cargo-zigbuild
run: cargo install cargo-zigbuild --locked
- name: Build project
run: |
target=${{ matrix.arch }}
case "${target}" in
aarch64-apple-darwin)
zig_target="aarch64-macos"
;;
x86_64-apple-darwin)
zig_target="x86_64-macos"
;;
*)
echo "Unsupported target: ${target}"
exit 1
;;
esac
target_env=${target//-/_}
export "CC_${target_env}=zig cc -target ${zig_target}"
export "CXX_${target_env}=zig c++ -target ${zig_target}"
export "AR_${target_env}=zig ar"
cargo zigbuild --release --target "${target}"
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 }}