Update CD workflow to manage git tags during commit amend #151
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: CD | |
on: | |
push: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: false | |
permissions: | |
contents: write | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
ACTIONS_RUNTIME_TOKEN: dummy | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
strategy: | |
matrix: | |
include: | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
runs-on: ${{ matrix.os }} | |
continue-on-error: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Ensure no changes (1) | |
run: git diff --exit-code --quiet && cargo check | |
continue-on-error: true | |
- name: Git status | |
if: failure() | |
run: git status && exit 1 | |
- name: Setup Git | |
run: | | |
git config user.name "Linus Oleander" | |
git config user.email "[email protected]" | |
- name: Setup Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: ${{ matrix.target }} | |
override: true | |
profile: minimal | |
- name: Install cargo-bump | |
run: cargo install cargo-bump | |
- name: Ensure no changes | |
run: git diff --exit-code --quiet && cargo check | |
- name: Git status | |
if: failure() | |
run: git status && exit 1 | |
- name: Bump version | |
run: | | |
cargo bump patch --git-tag | |
cargo check | |
- name: Include the version bump in the commit message | |
run: | | |
git tag -d $(git describe --tags --abbrev=0) | |
git commit -a --amend --no-edit | |
git tag $(git describe --tags --abbrev=0) | |
- name: Get the latest tag | |
run: git describe --tags --abbrev=0 HEAD | |
id: version | |
- name: Publish to crates.io | |
run: cargo publish --allow-dirty --target ${{ matrix.target }} | |
- name: Build for target | |
run: cargo build -Z unstable-options --profile dev --artifact-dir bin --target ${{ matrix.target }} | |
- name: List all targets | |
run: | | |
ls -halt bin/ | |
pwd | |
realpath bin/ | |
- name: Upload Binary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: v${{ steps.version.outputs.version }}-${{ matrix.target }} | |
if-no-files-found: error | |
path: | | |
bin/git-ai | |
bin/git-ai-hook | |
- name: Print the artifact URL | |
run: echo ${{ steps.upload-artifact.outputs.artifact-url }} | |
- name: Push to origin | |
run: git push origin HEAD |