Skip to content

Release

Release #19

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
bump:
description: 'Bump version by semver keyword.'
required: true
type: choice
options:
- patch
- minor
- major
permissions:
contents: write
jobs:
release:
name: Release
runs-on: ubuntu-latest
outputs:
version: ${{ steps.extract-version.outputs.VERSION }}
steps:
- name: Generate GitHub App token
id: app-token
uses: getsentry/action-github-app-token@v3
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v5
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: wasm32-unknown-unknown
- name: Install Cargo Binary Install
uses: cargo-bins/cargo-binstall@main
- name: Install crates
run: cargo binstall --force -y cargo-workspaces toml-cli
- name: Bump version
run: cargo workspaces version --all --no-git-commit --yes ${{ inputs.bump }}
- name: Extract version
id: extract-version
run: echo "VERSION=v$(toml get Cargo.toml workspace.package.version --raw)" >> "$GITHUB_OUTPUT"
- name: Add changes
run: git add .
- name: Commit
uses: dsanders11/github-app-commit-action@v1
with:
message: ${{ steps.extract-version.outputs.VERSION }}
token: ${{ steps.app-token.outputs.token }}
- name: Reset and pull
run: git reset --hard && git pull
- name: Tag
uses: bruno-fs/[email protected]
with:
tag: ${{ steps.extract-version.outputs.VERSION }}
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
- name: Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
make_latest: true
tag_name: ${{ steps.extract-version.outputs.VERSION }}
token: ${{ steps.app-token.outputs.token }}
- name: Publish
run: cargo workspaces publish --publish-as-is --token "${{ secrets.CRATES_IO_TOKEN }}"
release-binary:
strategy:
fail-fast: false
matrix:
package: [mdbook-tabs, mdbook-trunk]
target:
[
aarch64-unknown-linux-gnu,
aarch64-unknown-linux-musl,
x86_64-unknown-linux-gnu,
x86_64-unknown-linux-musl,
aarch64-apple-darwin,
x86_64-apple-darwin,
x86_64-pc-windows-msvc
]
include:
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
- target: aarch64-apple-darwin
os: macos-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: x86_64-pc-windows-msvc
os: windows-latest
runs-on: ${{ matrix.os }}
name: Release ${{ matrix.package }} for ${{ matrix.target }}
needs: release
steps:
- uses: actions/checkout@v5
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy, llvm-tools-preview, rustfmt, rust-std-${{ matrix.target }}
target: wasm32-unknown-unknown
- name: Set up target (*-musl)
if: ${{ endsWith(matrix.target, '-musl') }}
run: |
sudo apt update -y
sudo apt install -y musl-dev musl-tools
- name: Set up target (aarch64-unknown-linux-gnu)
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
run: |
sudo apt update -y
sudo apt install -y gcc-aarch64-linux-gnu
echo CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc >> $GITHUB_ENV
- name: Set up target (aarch64-unknown-linux-musl)
if: ${{ matrix.target == 'aarch64-unknown-linux-musl' }}
run: |
sudo apt update -y
sudo apt install -y gcc-aarch64-linux-gnu
echo CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=rust-lld >> $GITHUB_ENV
echo CC=aarch64-linux-gnu-gcc >> $GITHUB_ENV
- name: Build
run: cargo build --bins --locked --release --target ${{ matrix.target }}
- name: Archive (tar.gz)
if: ${{ !contains(matrix.target, '-windows-') }}
run: tar czf ../../${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.tar.gz ${{ matrix.package }}
working-directory: target/${{ matrix.target }}/release
- name: Archive (zip)
if: ${{ contains(matrix.target, '-windows-') }}
run: 7z a ../../${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.zip ${{ matrix.package }}.exe
working-directory: target/${{ matrix.target }}/release
- name: Upload release asset (tar.gz)
if: ${{ !contains(matrix.target, '-windows-') }}
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release.outputs.version }}
files: target/${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.tar.gz
- name: Upload release asset (zip)
if: ${{ contains(matrix.target, '-windows-') }}
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release.outputs.version }}
files: target/${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.zip