name: CD
on:
push:
tags:
- "v*.*.*"
jobs:
publish:
name: Build for ${{ matrix.target }}
runs-on: ${{ matrix.os }}
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- os: macos-latest
target: x86_64-apple-darwin
artifact_name: party
- os: macos-latest
target: aarch64-apple-darwin
artifact_name: party
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
dependencies: "gcc"
artifact_name: party
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
cross_arch: true
artifact_name: party
- os: windows-latest
target: x86_64-pc-windows-msvc
artifact_name: party.exe
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Linux Dependencies
if: matrix.dependencies
run: sudo apt-get update && sudo apt-get install -y ${{ matrix.dependencies }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Cache cargo
uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --locked --release --target ${{ matrix.target }} --package post-push-party
use-cross: ${{ matrix.cross_arch }}
- name: Package
shell: bash
run: |
cd target/${{ matrix.target }}/release
case ${{ matrix.target }} in
*-pc-windows-*)
7z -y a post-push-party-${{ matrix.target }}.zip party.exe
sha256sum post-push-party-${{ matrix.target }}.zip > post-push-party-${{ matrix.target }}.sha256
;;
*)
tar czvf post-push-party-${{ matrix.target }}.tar.gz party
shasum -a 256 post-push-party-${{ matrix.target }}.tar.gz > post-push-party-${{ matrix.target }}.sha256
;;
esac;
- name: Release
uses: softprops/action-gh-release@v2
with:
files: target/${{ matrix.target }}/release/post-push-party-*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
update-homebrew:
name: Update Homebrew formula
runs-on: ubuntu-latest
needs: publish
steps:
- name: Extract version from tag
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Wait for release assets
run: sleep 10
- name: Download SHA256 checksums
run: |
curl -sL "https://github.com/drewzemke/post-push-party/releases/download/${{ github.ref_name }}/post-push-party-aarch64-apple-darwin.sha256" -o arm64.sha256
curl -sL "https://github.com/drewzemke/post-push-party/releases/download/${{ github.ref_name }}/post-push-party-x86_64-apple-darwin.sha256" -o x86_64.sha256
echo "ARM64_SHA256=$(cut -d ' ' -f 1 arm64.sha256)" >> "$GITHUB_ENV"
echo "X86_64_SHA256=$(cut -d ' ' -f 1 x86_64.sha256)" >> "$GITHUB_ENV"
- name: Checkout homebrew-tap repo
uses: actions/checkout@v4
with:
repository: drewzemke/homebrew-tap
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
- name: Update formula
run: |
sed -i 's/version "[^"]*"/version "${{ steps.version.outputs.version }}"/' Formula/post-push-party.rb
sed -i '/on_arm do/{n;n;s/sha256 "[^"]*"/sha256 "${{ env.ARM64_SHA256 }}"/}' Formula/post-push-party.rb
sed -i '/on_intel do/{n;n;s/sha256 "[^"]*"/sha256 "${{ env.X86_64_SHA256 }}"/}' Formula/post-push-party.rb
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Formula/post-push-party.rb
git commit -m "chore(post-push-party): update to ${{ steps.version.outputs.version }}"
git push