feat: main show case #16
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
# Verifies all tests pass | |
verify: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
permissions: | |
contents: read | |
issues: read | |
checks: write | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch the whole history and tags. | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: just@1 | |
- run: just verify | |
# Prepare a release PR or release | |
release: | |
needs: verify | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
outputs: | |
released: ${{ steps.release.outputs.release_created }} | |
steps: | |
- uses: actions/checkout@v4 | |
- id: release | |
uses: googleapis/release-please-action@v4 | |
with: | |
token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }} | |
release-type: rust | |
# Publish the artifacts (only if `verify` passed, and `release` created release) | |
publish: | |
needs: [ verify, release ] | |
if: needs.verify.result == 'success' && needs.release.outputs.released | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
permissions: | |
contents: read | |
packages: write | |
attestations: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: just@1,hurl@4 | |
- uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ github.token }} | |
- run: | | |
just push | |
shell: bash | |
pub_lib: | |
needs: [ publish ] | |
runs-on: ubuntu-latest | |
if: needs.verify.result == 'success' && needs.release.outputs.released | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Rust setup | |
uses: dtolnay/rust-toolchain@stable | |
- name: Rust cache | |
uses: swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: just@1 | |
- run: just publish | |
env: | |
GLOBAL_CARGO_TOKEN: ${{ secrets.GLOBAL_CARGO_TOKEN }} | |