name: Release Please🙏!
permissions:
contents: write
pull-requests: write
on:
push:
branches:
- main
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.BOT_PAT }}
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
target-branch: ${{ github.ref_name }}
release-type: rust
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install system dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y libssl-dev pkg-config
- name: Install wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
- name: Publish to crates.io (dry-run)
if: ${{ steps.release.outputs.pr }}
run: |
cargo publish --workspace --token ${{ secrets.CARGO_REGISTRY_TOKEN }} --dry-run
- name: Enable auto-merge
if: ${{ steps.release.outputs.pr }}
run: gh pr merge --auto --rebase ${{ fromJSON(steps.release.outputs.pr).number }}
env:
GH_TOKEN: ${{ secrets.BOT_PAT }}
- name: Configure git
if: ${{ steps.release.outputs.release_created }}
run: |
git config user.name okmachina
git config user.email 163742220+okmachina@users.noreply.github.com
- name: Tag major and minor versions
if: ${{ steps.release.outputs.release_created }}
run: |
git remote add gh-token "https://${{ secrets.BOT_PAT }}@github.com/google-github-actions/release-please-action.git"
git tag -d v${{ steps.release.outputs.major }} || true
git tag -d v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true
git push origin :v${{ steps.release.outputs.major }} || true
git push origin :v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true
git tag -a v${{ steps.release.outputs.major }} -m "Release v${{ steps.release.outputs.major }}"
git tag -a v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}"
git push origin v${{ steps.release.outputs.major }}
git push origin v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}
- name: Publish to crates.io
if: ${{ steps.release.outputs.release_created }}
run: |
cargo publish --workspace --token ${{ secrets.CARGO_REGISTRY_TOKEN }}