Skip to content

chore(version): v1.2.0 #1

chore(version): v1.2.0

chore(version): v1.2.0 #1

name: Publish crate
env: {}
concurrency:
group: "${{ github.workflow }}"
cancel-in-progress: false # last one must win in case of multiple releases
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
permissions:
contents: read
jobs:
repo-has-crate:
name: Repo publishes crate?
runs-on: ubuntu-latest
outputs:
has_crate: ${{ steps.determine.outputs.has_crate }}
steps:
- name: Repo has crate?
id: determine
shell: bash
run: |
HAS_CRATE="${{ vars.HAS_CRATE }}"
echo "has_crate=${HAS_CRATE:-false}" >> ${GITHUB_OUTPUT}
publish-crate:
name: Publish crate
runs-on: ubuntu-latest
needs:
- repo-has-crate
if: |
fromJSON(needs.repo-has-crate.outputs.has_crate) == true
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
show-progress: false
- name: Cache dependencies
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
env:
CACHE_NAME: cargo-cache-dependencies
with:
path: |
~/.cargo
./target
key: ${{ runner.os }}-build-${{ env.CACHE_NAME }}-${{ hashFiles('Cargo.lock') }}-test
restore-keys: |
${{ runner.os }}-build-${{ env.CACHE_NAME }}-${{ hashFiles('Cargo.lock') }}-
${{ runner.os }}-build-${{ env.CACHE_NAME }}-
- name: Set up mold
uses: rui314/setup-mold@f80524ca6eeaa76759b57fb78ddce5d87a20c720 # v1
- name: Set up toolchain
shell: bash
run: |
rm ${HOME}/.cargo/bin/cargo-fmt
rm ${HOME}/.cargo/bin/rust-analyzer
rm ${HOME}/.cargo/bin/rustfmt
rustup self update
rustup update
rustup show active-toolchain || rustup toolchain install
rustup show
cargo --version
- name: Get binstall
shell: bash
working-directory: /tmp
run: |
archive="cargo-binstall-x86_64-unknown-linux-musl.tgz"
wget "https://github.com/cargo-bins/cargo-binstall/releases/latest/download/${archive}"
tar -xvf "./${archive}"
rm "./${archive}"
mv ./cargo-binstall ~/.cargo/bin/
- name: Install binstall to do set-version
shell: bash
run: |
cargo binstall cargo-edit
- name: Set version in Cargo.toml / Cargo.lock
shell: bash
id: version
run: |
VERSION="${{ github.ref_name }}"
# remove v
VERSION="${VERSION//v/}"
# store
cargo set-version ${VERSION}
# debug
cat Cargo.toml
- name: Publish
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
# we don't commit the version number in our codebase
cargo publish --allow-dirty