name: Release
on:
push:
tags:
- "v*"
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- target: x86_64-apple-darwin
os: macos-latest
- target: aarch64-apple-darwin
os: macos-latest
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: rustup target add ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
- name: Install cross
if: runner.os == 'Linux'
run: cargo install cross --git https://github.com/cross-rs/cross
- name: Build (cross)
if: runner.os == 'Linux'
run: cross build --release --target ${{ matrix.target }}
- name: Build (cargo)
if: runner.os != 'Linux'
run: cargo build --release --target ${{ matrix.target }}
- name: Package
shell: bash
run: |
dir="mdiff-${{ matrix.target }}"
mkdir "$dir"
cp "target/${{ matrix.target }}/release/mdiff" "$dir/"
cp LICENSE "$dir/"
tar czf "$dir.tar.gz" "$dir"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mdiff-${{ matrix.target }}
path: mdiff-${{ matrix.target }}.tar.gz
release:
name: Create Release
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: artifacts
- name: Collect tarballs
run: |
mkdir release
mv artifacts/mdiff-*/mdiff-*.tar.gz release/
- name: Generate checksums
working-directory: release
run: sha256sum *.tar.gz > sha256sums.txt
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "${{ github.ref_name }}" \
--title "${{ github.ref_name }}" \
--generate-notes \
release/*
update-homebrew:
name: Update Homebrew Formula
needs: release
runs-on: ubuntu-latest
steps:
- name: Get version
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
- name: Download macOS artifacts for SHA
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Calculate SHAs
id: sha
run: |
echo "arm64_sha=$(sha256sum artifacts/mdiff-aarch64-apple-darwin/mdiff-aarch64-apple-darwin.tar.gz | cut -d' ' -f1)" >> $GITHUB_OUTPUT
echo "x86_64_sha=$(sha256sum artifacts/mdiff-x86_64-apple-darwin/mdiff-x86_64-apple-darwin.tar.gz | cut -d' ' -f1)" >> $GITHUB_OUTPUT
- name: Update Homebrew formula
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
repository: mutinyhq/homebrew-tap
event-type: update-formula
client-payload: |
{
"version": "${{ steps.version.outputs.version }}",
"arm64_sha": "${{ steps.sha.outputs.arm64_sha }}",
"x86_64_sha": "${{ steps.sha.outputs.x86_64_sha }}"
}