name: Release
on:
push:
tags:
- '*'
jobs:
github-release-draft:
name: 'Create GitHub Release Draft'
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get_version.outputs.VERSION }}
upload-url: ${{ steps.create-release.outputs.upload_url }}
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Get the version
id: get_version
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
- name: Create Release Draft
id: create-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create ${{ steps.get_version.outputs.VERSION }} \
--generate-notes \
--draft \
--title "v${{ steps.get_version.outputs.VERSION }}"
echo "upload_url=https://uploads.github.com/repos/${{ github.repository }}/releases/latest/assets" >> $GITHUB_OUTPUT
linux-binary:
name: 'Upload Binary for Linux'
runs-on: ubuntu-latest
needs: github-release-draft
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Install dependent packages
run: sudo apt install -y musl-tools
- run: rustup update stable
- run: rustup target add x86_64-unknown-linux-musl
- run: cargo build --release --target=x86_64-unknown-linux-musl
- name: Upload Release Asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mv target/x86_64-unknown-linux-musl/release/efmt efmt-${{ needs.github-release-draft.outputs.version }}.x86_64-unknown-linux-musl
gh release upload ${{ needs.github-release-draft.outputs.version }} \
efmt-${{ needs.github-release-draft.outputs.version }}.x86_64-unknown-linux-musl
macos-binary:
name: 'Upload Binary for MacOS'
runs-on: macos-latest
needs: github-release-draft
strategy:
matrix:
target: ["x86_64-apple-darwin", "aarch64-apple-darwin"]
steps:
- name: Checkout sources
uses: actions/checkout@v6
- run: rustup update stable
- run: rustup target add ${{ matrix.target }}
- run: cargo build --release --target=${{ matrix.target }}
- name: Upload Release Asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mv target/${{ matrix.target }}/release/efmt efmt-${{ needs.github-release-draft.outputs.version }}.${{ matrix.target }}
gh release upload ${{ needs.github-release-draft.outputs.version }} \
efmt-${{ needs.github-release-draft.outputs.version }}.${{ matrix.target }}