Skip to content

ci: add crates.io publishing #27

ci: add crates.io publishing

ci: add crates.io publishing #27

Workflow file for this run

name: Create Tag on Release Commit
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
create-tag:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.extract_version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.RELEASE_BOT }}
- name: Extract version from commit message
id: extract_version
run: |
COMMIT_MSG=$(git log --format=%B -n 1 ${{ github.sha }})
if [[ $COMMIT_MSG =~ chore\(main\):\ release\ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then
echo "version=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT
else
echo "version=" >> $GITHUB_OUTPUT
fi
- name: Create and push tag
if: steps.extract_version.outputs.version != ''
run: |
VERSION=${{ steps.extract_version.outputs.version }}
git config user.name Guilherme Prokisch
git config user.email guilherme.prokisch@gmail.com
git tag -a v$VERSION -m "Release v$VERSION"
git push origin v$VERSION
env:
GH_TOKEN: ${{ secrets.RELEASE_BOT }}
publish:
name: Publish to crates.io
needs: create-tag
if: needs.create-tag.outputs.version != ''
runs-on: ubuntu-latest
environment: crates.io
steps:
- uses: actions/checkout@v3
- uses: swatinem/rust-cache@v2
- name: Publish
run: >
cargo publish
--verbose
--locked
--token ${{ secrets.CARGO_REGISTRY_TOKEN }}