name: Release CI
on:
push:
tags:
- 'release/v?[0-9]*'
env:
GITHUB_REF_NAME: ${{ github.ref_name }}
jobs:
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
path: main
- name: Set up environment variables
run: ./.github/scripts/publish_env.sh >> $GITHUB_ENV
working-directory: ./main
shell: bash
- name: Setup Rust Toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Pack API client
run: ./.github/scripts/pack.sh
working-directory: ./main
shell: bash
- name: Auth for trusted publishing
uses: rust-lang/crates-io-auth-action@v1
id: auth
- name: Publish API client
run: ./.github/scripts/publish.sh
working-directory: ./main
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
- name: Write release body file
run: CODE_PATH=./main ./main/.github/scripts/release_body.sh > ./dist/release_body.txt
shell: bash
- name: Create release (dry run)
if: ${{ env.DRY_RUN == '1' }}
run: cat ./dist/release_body.txt
- name: Create GitHub release
if: ${{ env.DRY_RUN != '1' }}
uses: softprops/action-gh-release@v1
with:
name: v${{ env.VERSION }}
body_path: ./dist/release_body.txt
files: |
./dist/${{ env.PACKAGE_FILENAME }}
draft: false
prerelease: ${{ env.PUBLISH_TAG != 'latest' }}