Skip to content

Release Action

Release Action #26

Workflow file for this run

name: Release Action
on:
release:
types:
- published
workflow_dispatch: # for testing
jobs:
publish-package:
runs-on: ubuntu-latest
name: Publish to PyPI
outputs:
published: ${{ steps.set-published-state.outputs.published }} # Define an output for the job
steps:
- name: Checkout
id: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: 3.13
- name: Initialize pants
uses: pantsbuild/actions/init-pants@main
with:
gha-cache-key: cache0-py3.13
named-caches-hash: ${{ hashFiles('requirements.txt') }}
- name: Publish to PyPI
run: |
# Get the previous tag
previous_tag=$(git describe --tags --abbrev=0 HEAD^)
echo "Comparing changes since $previous_tag"
# Get list of changed targets since the previous tag
changed_targets=$(pants --changed-since=$previous_tag list | awk -F/ '{print $1}' | sort -u)
if [ -n "$changed_targets" ]; then
echo "Publishing changed targets: $changed_targets"
for target in $changed_targets; do
pants publish $target::
done
echo "published=true" >> $GITHUB_ENV
else
echo "No changes detected, skipping publish"
echo "published=false" >> $GITHUB_ENV
fi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
- name: Set published state
id: set-published-state
run: |
echo "::set-output name=published::$published"
notify-release:
runs-on: ubuntu-latest
name: Notify Release
needs: publish-package
if: needs.publish-package.outputs.published == 'true'
strategy:
matrix:
url: [SLACK_WEBHOOK_ASK_DEVREL_URL, SLACK_WEBHOOK_DEVREL_TOOLING_URL, SLACK_WEBHOOK_DEVREL_PRIVATE_URL]
steps:
- name: Send to slack channels
uses: slackapi/slack-github-action@v2.0.0
if: always()
continue-on-error: true
with:
webhook: ${{ secrets[matrix.url]}}
webhook-type: incoming-webhook
errors: true
payload: |
blocks:
- type: "header"
text:
type: "plain_text"
text: ":initial_external_notification_sent: :python: Version ${{ github.event.release.name }} of the Python SDK has been released"
- type: "section"
text:
type: "mrkdwn"
text: "${{ github.event.release.body }}"
- type: "divider"
- type: "section"
text:
type: "mrkdwn"
text: "You can view the full change log <${{github.event.release.html_url }}|here>"