Skip to content

Publish and release on PyPI #1

Publish and release on PyPI

Publish and release on PyPI #1

Workflow file for this run

name: Publish and release on PyPI
on:
release:
types:
- published
env:
PUBLISH_UPDATE_BRANCH: main
GIT_USER_NAME: datalab developers
GIT_USER_EMAIL: "[email protected]"
jobs:
publish:
name: Publish package
runs-on: ubuntu-latest
permissions:
id-token: write
if: github.repository == 'datalab-org/datalab-python-api' && startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
ref: ${{ env.PUBLISH_UPDATE_BRANCH }}
- name: Update changelog
uses: CharMixer/auto-changelog-action@v1
with:
token: ${{ secrets.ORG_RELEASE_PAT }}
release_branch: ${{ env.PUBLISH_UPDATE_BRANCH }}
exclude_labels: "duplicate,question,invalid,wontfix,dependency_updates,skip_changelog"
- name: Configure git and commit CHANGELOG
run: |
git config --global user.email "${GIT_USER_EMAIL}"
git config --global user.name "${GIT_USER_NAME}"
git commit CHANGELOG.md -m "Release ${GITHUB_REF#refs/tags/}"
- name: Move tag to new HEAD
run: |
TAG_MSG=.github/utils/release_tag_msg.txt
sed -i "s|TAG_NAME|${GITHUB_REF#refs/tags/}|" "${TAG_MSG}"
git tag -af -F "${TAG_MSG}" ${GITHUB_REF#refs/tags/}
- name: Update '${{ env.PUBLISH_UPDATE_BRANCH }}'
uses: CasperWA/push-protected@v2
with:
token: ${{ secrets.ORG_RELEASE_PAT }}
branch: ${{ env.PUBLISH_UPDATE_BRANCH }}
unprotect_reviews: true
sleep: 15
force: true
tags: true
- name: Create release-specific changelog
uses: CharMixer/auto-changelog-action@v1
with:
token: ${{ secrets.ORG_RELEASE_PAT }}
release_branch: ${{ env.PUBLISH_UPDATE_BRANCH }}
since_tag: "${{ env.PREVIOUS_VERSION }}"
output: "release_changelog.md"
exclude_labels: "duplicate,question,invalid,wontfix,dependency_updates,CI,skip_changelog"
- name: Append changelog to release body
run: |
gh api /repos/${{ github.repository }}/releases/${{ github.event.release.id }} --jq '.body' > release_body.md
cat release_changelog.md >> release_body.md
gh api /repos/${{ github.repository }}/releases/${{ github.event.release.id }} -X PATCH -F body='@release_body.md'
env:
GITHUB_TOKEN: ${{ secrets.ORG_RELEASE_PAT }}
- name: Build source distribution
run: |
pip install -U build
python -m build
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1