From 347d54b7a1f34381fe6169386bd799c3ab3341b5 Mon Sep 17 00:00:00 2001 From: Michal Rostecki Date: Thu, 8 Feb 2024 08:17:41 +0100 Subject: [PATCH] ci: Add release job Build and publish multi-platform binaries for all tags. --- .github/workflows/release.yml | 98 +++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..1dab3afef6 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,98 @@ +name: Publish a release + +on: + push: + tags: + - "*" + +permissions: + contents: write + +env: + CROSS_VERSION: 0.2.5 + +jobs: + release-linux: + name: Release (Linux) + runs-on: buildjet-32vcpu-ubuntu-2004 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + + - uses: Swatinem/rust-cache@v1 + + - name: Install cross + uses: supplypike/setup-bin@v3 + with: + uri: "https://github.com/cross-rs/cross/releases/download/v${{ env.CROSS_VERSION }}/cross-x86_64-unknown-linux-musl.tar.gz" + name: "cross" + version: "${{ env.CROSS_VERSION }}" + + - name: Build (Linux amd64) + run: | + cargo clean + cross build --release --target x86_64-unknown-linux-musl + cp target/x86_64-unknown-linux-musl/release/anchor \ + anchor-linux-amd64 + + - name: Build (Linux arm64) + run: | + cargo clean + cross build --release --target aarch64-unknown-linux-musl + cp target/aarch64-unknown-linux-musl/release/anchor \ + anchor-linux-arm64 + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + token: ${{ secrets.PAT_TOKEN }} + files: | + anchor-linux-amd64 + anchor-linux-arm64 + + release-macos: + name: Release (macOS) + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + + - uses: Swatinem/rust-cache@v1 + + - name: Install Rust aarch64-apple-darwin target + run: | + rustup target add aarch64-apple-darwin + + - name: Build (macOS amd64) + run: | + cargo build --release --target x86_64-apple-darwin + cp target/x86_64-apple-darwin/release/anchor \ + anchor-macos-amd64 + + - name: Build (macOS arm64) + run: | + cargo build --release --target aarch64-apple-darwin + cp target/aarch64-apple-darwin/release/anchor \ + anchor-macos-arm64 + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + token: ${{ secrets.PAT_TOKEN }} + files: | + anchor-macos-amd64 + anchor-macos-arm64