name: Publish
on:
push:
tags:
- "v*.*.*"
workflow_dispatch:
inputs:
version:
description: "Version of the release, should match an existing tag name. E.g. v0.1.0"
required: true
jobs:
publish:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
- shell: bash
run: echo "VERSION=${{ inputs.version || github.ref_name }}" >> $GITHUB_ENV
- shell: bash
run: |
VERSION=`cargo metadata --format-version=1 --no-deps | jq '.packages[0].version' | tr -d '"'`
[ "v$VERSION" = "${{ env.VERSION }}" ] || (echo "Version mismatch" && exit 1)
- shell: bash
run: |
VERSION=`cargo metadata --format-version=1 --no-deps | jq '.packages[0].version' | tr -d '"'`
grep -q "## \[$VERSION\]" CHANGELOG.md || (echo "Version not found in CHANGELOG" && exit 1)
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo fmt --check
- run: cargo clippy -- -D warnings
- run: cargo check --examples
- run: cargo doc
env:
RUSTDOCFLAGS: -D warnings
- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- run: gh release create ${{ env.VERSION }} -t ${{ env.VERSION }} --verify-tag -n "See [CHANGELOG.md](https://github.com/DiscreteTom/rusty-duplication/blob/main/CHANGELOG.md)."
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}