feat: implement auto-release GHA and conventional commits. (#5) #1
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: Bump version, create release and deploy | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
isort: | |
uses: ./.github/workflows/isort.yml | |
black: | |
uses: ./.github/workflows/black.yml | |
build: | |
uses: ./.github/workflows/build.yml | |
tag_release: | |
needs: [isort, black, build] | |
runs-on: ubuntu-latest | |
outputs: | |
tag: ${{ steps.semver.outputs.next }} | |
old_tag: ${{ steps.semver.outputs.current }} | |
steps: | |
- name: Create Github token | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ vars.DBBS_APP_ID }} | |
private-key: ${{ secrets.DBBS_APP_PRIVATE_KEY }} | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ steps.app-token.outputs.token }} | |
- name: Get Next Version | |
id: semver | |
uses: ietf-tools/semver-action@v1 | |
with: | |
token: ${{ steps.app-token.outputs.token }} | |
branch: main | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
- name: Bump version in Python project | |
run: | | |
pip install --upgrade pip bump-my-version | |
oldv="${{ steps.semver.outputs.current }}" | |
newv="${{steps.semver.outputs.next}}" | |
# Bump the version, dropping the leading `v` with `${x:1}` | |
bump-my-version replace --current-version=${oldv:1} --new-version=${newv:1} pyproject.toml | |
- name: Commit & Push version change | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
branch: main | |
commit_message: 'docs: bump version: ${{ steps.semver.outputs.current }} → ${{ steps.semver.outputs.next }} [skip ci]' | |
- name: Create tag | |
uses: rickstaa/action-create-tag@v1 | |
with: | |
tag: ${{ steps.semver.outputs.next }} | |
github_token: ${{ steps.app-token.outputs.token }} | |
release: | |
runs-on: ubuntu-latest | |
needs: tag_release | |
steps: | |
- name: Create Github token | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ vars.DBBS_APP_ID }} | |
private-key: ${{ secrets.DBBS_APP_PRIVATE_KEY }} | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ steps.app-token.outputs.token }} | |
- name: Pull commit of version change | |
run: | | |
git pull origin main | |
- name: Update CHANGELOG | |
id: changelog | |
uses: requarks/changelog-action@v1 | |
with: | |
token: ${{ steps.app-token.outputs.token }} | |
fromTag: ${{ needs.tag_release.outputs.tag }} | |
toTag: ${{ needs.tag_release.outputs.old_tag }} | |
- name: Create Release | |
uses: ncipollo/release-action@v1.12.0 | |
with: | |
allowUpdates: true | |
draft: false | |
makeLatest: true | |
tag: ${{ needs.tag_release.outputs.tag }} | |
name: ${{ needs.tag_release.outputs.tag }} | |
body: ${{ steps.changelog.outputs.changes }} | |
token: ${{ steps.app-token.outputs.token }} | |
- name: Commit CHANGELOG.md | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
branch: main | |
commit_message: 'docs: update CHANGELOG.md for ${{ github.ref_name }} [skip ci]' | |
file_pattern: CHANGELOG.md | |
pypi-publish: | |
runs-on: ubuntu-latest | |
needs: release | |
environment: | |
name: pypi | |
url: https://pypi.org/p/bsb-json | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | |
steps: | |
- name: Create Github token | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ vars.DBBS_APP_ID }} | |
private-key: ${{ secrets.DBBS_APP_PRIVATE_KEY }} | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ steps.app-token.outputs.token }} | |
- name: Pull commits of version bump | |
run: | | |
git pull origin main | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
- name: Install dependencies and build dist | |
run: | | |
python -m pip install --upgrade pip | |
pip install build | |
python -m build | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |