name: Release
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
steps:
- uses: googleapis/release-please-action@v4
id: release
publish:
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo publish --all-features
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
sync-develop:
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Merge main into develop
run: |
git checkout develop
if git merge main --no-edit; then
git push origin develop
else
git merge --abort
gh pr create \
--base develop \
--head main \
--title "chore: sync main back into develop after release" \
--body "Auto-merge of main into develop failed due to conflicts. Please resolve manually."
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}