name: Publish
on:
workflow_dispatch:
inputs:
push_tags:
type: boolean
description: "Push tags to repository"
required: true
default: true
jobs:
publish:
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write contents: write steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: rust-lang/crates-io-auth-action@c6f97d42243bad5fab37ca0427f495c86d5b1a18 id: auth
- run: cargo publish --locked -vv
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
- if: ${{ inputs.push_tags }}
run: |
PUBLISHED_VERSION=$(cargo metadata --locked --format-version=1 --no-deps | jq -r '.packages[0].version')
TAG="v$PUBLISHED_VERSION"
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag "$TAG" -m "$TAG"
git push origin "refs/tags/$TAG"