name: Release
on:
push:
tags:
- "v*"
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 with:
targets: x86_64-apple-darwin,aarch64-apple-darwin
- name: Build release (x86_64)
run: cargo build --release --target x86_64-apple-darwin
- name: Build release (aarch64)
run: cargo build --release --target aarch64-apple-darwin
- name: Create universal binary
run: |
lipo -create \
target/x86_64-apple-darwin/release/region-proxy \
target/aarch64-apple-darwin/release/region-proxy \
-output region-proxy
- name: Create tarball
env:
TAG: ${{ github.ref_name }}
run: |
tar -czvf "region-proxy-${TAG}-macos.tar.gz" region-proxy
- name: Calculate SHA256
id: sha256
env:
TAG: ${{ github.ref_name }}
run: |
SHA256=$(shasum -a 256 "region-proxy-${TAG}-macos.tar.gz" | cut -d ' ' -f 1)
echo "sha256=$SHA256" >> $GITHUB_OUTPUT
echo "SHA256: $SHA256"
- name: Upload artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with:
name: macos-release
path: |
region-proxy-${{ github.ref_name }}-macos.tar.gz
- name: Save SHA256
run: echo "${{ steps.sha256.outputs.sha256 }}" > sha256-macos.txt
- name: Upload SHA256
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with:
name: sha256-macos
path: sha256-macos.txt
release:
needs: build-macos
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Download macOS artifacts
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c with:
name: macos-release
- name: Download SHA256
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c with:
name: sha256-macos
- name: Create Release
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe with:
files: |
region-proxy-${{ github.ref_name }}-macos.tar.gz
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish-crates:
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7
- name: Publish to crates.io
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish --token $CARGO_REGISTRY_TOKEN
update-homebrew:
needs: [build-macos, release]
runs-on: ubuntu-latest
steps:
- name: Download SHA256
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c with:
name: sha256-macos
- name: Read SHA256
id: sha256
run: |
SHA256=$(cat sha256-macos.txt)
echo "sha256=$SHA256" >> $GITHUB_OUTPUT
- name: Update Homebrew formula
uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 with:
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
repository: M-Igashi/homebrew-tap
event-type: update-formula
client-payload: |
{
"version": "${{ github.ref_name }}",
"sha256": "${{ steps.sha256.outputs.sha256 }}"
}