Automated release workflow #247
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: Automated release workflow | |
on: | |
workflow_dispatch: | |
inputs: | |
major: | |
description: "The new major version." | |
required: true | |
type: string | |
minor: | |
description: "The new minor version." | |
required: true | |
type: string | |
patch: | |
description: "The new patch version." | |
required: true | |
type: string | |
increment: | |
description: "The type of increment." | |
required: true | |
type: choice | |
options: | |
- MAJOR | |
- MINOR | |
- PATCH | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Set up python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.8 | |
- name: Run image | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: 1.4.0 | |
- name: Cache Poetry virtualenv | |
uses: actions/cache@v3 | |
id: cache | |
with: | |
path: ~/.virtualenvs | |
key: venv-ubuntu-latest-3.8-${{ hashFiles('**/poetry.lock') }} | |
- name: Set Poetry config | |
run: | | |
poetry config virtualenvs.in-project false | |
poetry config virtualenvs.path ~/.virtualenvs | |
- name: Install Dependencies | |
run: poetry install | |
if: steps.cache.outputs.cache-hit != 'true' | |
- name: Generate changelog | |
run: poetry run cz changelog --unreleased-version="${{ github.event.inputs.major }}.${{ github.event.inputs.minor }}.${{ github.event.inputs.patch }}" --incremental | |
- name: Get user info | |
id: user_info | |
run: | | |
USER_JSON=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/users/${{ github.actor }}") | |
USER_NAME=$(echo "$USER_JSON" | jq -r .name) | |
USER_EMAIL=$(echo "$USER_JSON" | jq -r .email) | |
echo "::set-output name=name::$USER_NAME" | |
echo "::set-output name=email::$USER_EMAIL" | |
- name: Configure git | |
run: | | |
git config --local user.email "${{ steps.user_info.outputs.email }}" | |
git config --local user.name "${{ steps.user_info.outputs.name }}" | |
- name: Bump version | |
run: | | |
poetry run cz bump --yes --increment ${{ github.event.inputs.increment }} | |
git push | |
git push --tags | |
- name: Build hydrolib-core package | |
run: poetry build | |
- name: Publish package to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
- name: Create GitHub release | |
uses: softprops/action-gh-release@v1 | |
with: | |
name: Release v${{ github.event.inputs.major }}.${{ github.event.inputs.minor }}.${{ github.event.inputs.patch }} | |
tag_name: ${{ github.event.inputs.major }}.${{ github.event.inputs.minor }}.${{ github.event.inputs.patch }} | |
generate_release_notes: true | |
token: ${{ secrets.GITHUB_TOKEN }} |