Skip to content

Commit

Permalink
fix build release ci
Browse files Browse the repository at this point in the history
  • Loading branch information
spencerwooo committed Nov 27, 2023
1 parent 7f59746 commit dbda9d4
Showing 1 changed file with 73 additions and 42 deletions.
115 changes: 73 additions & 42 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,68 +4,99 @@ on:
workflow_dispatch:
push:
tags:
- "*"
- 'v[0-9]+.[0-9]+.[0-9]+'

jobs:
build:
name: Build and publish release
runs-on: ubuntu-latest
name: Build and publish release for ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-pc-windows-msvc
- i686-pc-windows-msvc
- x86_64-apple-darwin
- aarch64-apple-darwin

include:
- target: x86_64-unknown-linux-gnu
name: bitsrun-x86_64-unknown-linux-gnu.tar.gz
cross: false
strip: true
os: ubuntu-22.04
target-apt-arch: amd64
- target: x86_64-unknown-linux-musl
name: bitsrun-x86_64-unknown-linux-musl.tar.gz
cross: true
strip: true
- target: i686-unknown-linux-gnu
name: bitsrun-i686-unknown-linux-gnu.tar.gz
cross: true
strip: true
- target: i686-unknown-linux-musl
name: bitsrun-i686-unknown-linux-musl.tar.gz
cross: true
strip: true
os: ubuntu-22.04
target-apt-arch: amd64
- target: aarch64-unknown-linux-gnu
name: bitsrun-aarch64-unknown-linux-gnu.tar.gz
cross: true
strip: false
os: ubuntu-22.04
target-apt-arch: arm64
- target: aarch64-unknown-linux-musl
name: bitsrun-aarch64-unknown-linux-musl.tar.gz
cross: true
strip: false
os: ubuntu-22.04
target-apt-arch: arm64
- target: x86_64-pc-windows-msvc
os: windows-latest
- target: i686-pc-windows-msvc
os: windows-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: aarch64-apple-darwin
os: macos-latest

env:
BIN_NAME: bitsrun
CARGO_BUILD_TARGET: ${{ matrix.target }}
ARCHIVE_NAME: bitsrun-${{ matrix.target }}

steps:
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.target }}

- name: Build binaries
uses: ClementTsang/[email protected]
- name: Set up Ubuntu multiarch
if: startsWith(matrix.os, 'ubuntu') && matrix.target-apt-arch != 'amd64'
run: |
readonly DISTRO_CODENAME=jammy
sudo dpkg --add-architecture "${{ matrix.target-apt-arch }}"
sudo sed -i "s/^deb http/deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH)] http/" /etc/apt/sources.list
sudo sed -i "s/^deb mirror/deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH)] mirror/" /etc/apt/sources.list
for suite in '' '-updates' '-backports' '-security'; do
echo "deb [arch=${{ matrix.target-apt-arch }}] http://ports.ubuntu.com/ $DISTRO_CODENAME$suite main universe multiverse" | \
sudo tee -a /etc/apt/sources.list >/dev/null
done
- name: Install musl development files
if: endsWith(matrix.target, '-musl')
run: |
sudo apt-get -yq update
sudo apt-get -yq install musl-tools musl-dev:${{ matrix.target-apt-arch }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
command: build
args: --release --target=${{ matrix.target }}
use-cross: ${{ matrix.cross }}
target: ${{ env.CARGO_BUILD_TARGET }}

- name: Strip binaries
run: strip target/${{ matrix.target }}/release/bitsrun
if: ${{ matrix.strip }}
- name: Build binary
run: cargo build --release

- name: Package binaries
- name: Package binary archives
working-directory: target
run: |
cd target/${{ matrix.target }}/release
tar -czvf ${{ matrix.name }} bitsrun
cd -
mkdir "${{ env.ARCHIVE_NAME }}"
case '${{ matrix.target }}' in
*-windows-*)
cp ${{ env.BIN_NAME }}.exe "${{ env.ARCHIVE_NAME }}"
zip "${{ env.ARCHIVE_NAME }}.zip" "${{ env.ARCHIVE_NAME }}"/*;;
*)
cp ${{ env.BIN_NAME }} "${{ env.ARCHIVE_NAME }}"
chmod ugo+x "${{ env.ARCHIVE_NAME }}"/${{ env.BIN_NAME }}
tar -vczf "${{ env.ARCHIVE_NAME }}.tar.gz" "${{ env.ARCHIVE_NAME }}"/*;;
esac
- name: Upload binaries to release
- name: Upload binary for release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/${{ matrix.target }}/release/${{ matrix.name }}
asset_name: ${{ matrix.name }}
file: target/release/${{ env.ARCHIVE_NAME }}${{ endsWith(env.CARGO_BUILD_TARGET, '-windows-msvc') && '.zip' || '.tar.gz'}}
asset_name: ${{env.ARCHIVE_NAME}}${{ endsWith(env.CARGO_BUILD_TARGET, '-windows-msvc') && '.zip' || '.tar.gz'}}
tag: ${{ github.ref }}

0 comments on commit dbda9d4

Please sign in to comment.