Release new version #6
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: Release new version | |
on: | |
workflow_dispatch: | |
secrets: | |
CARGO_REGISTRY_TOKEN: | |
required: true | |
env: | |
RUST_BACKTRACE: 1 | |
CARGO_TERM_COLOR: always | |
jobs: | |
create-release: | |
name: Create release | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: true | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
# Determine which version we're about to publish, so we can tag it appropriately. | |
# If the tag already exists, then we've already published this version. | |
- name: Determine current version | |
id: version-check | |
run: | | |
# Fail on first error, on undefined variables, and on errors in pipes. | |
set -euo pipefail | |
export VERSION="$(cargo metadata --format-version 1 | \ | |
jq --arg crate_name cargo_metadata --exit-status -r \ | |
'.packages[] | select(.name == $crate_name) | .version')" | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
if [[ "$(git tag -l "$VERSION")" != '' ]]; then | |
echo "Aborting: Version $VERSION is already published, we found its tag in the repo." | |
exit 1 | |
fi | |
- name: Semver-check | |
uses: obi1kenobi/cargo-semver-checks-action@v2 | |
with: | |
rust-toolchain: manual # we've already installed Rust, don't install a new one | |
- name: Publish | |
run: cargo publish | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
- name: Tag the version | |
run: | | |
# Fail on first error, on undefined variables, and on errors in pipes. | |
set -euo pipefail | |
git tag "${{ steps.version-check.outputs.version }}" | |
git push origin "${{ steps.version-check.outputs.version }}" | |
- uses: taiki-e/create-gh-release-action@v1 | |
name: Create GitHub release | |
with: | |
branch: main | |
ref: refs/tags/${{ steps.version-check.outputs.version }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |