This file contains hidden or 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: Create Release and Publish to PyPI | |
# Creates a GitHub release when a PR is merged to main (using PR title as version and body as release notes), then publishes to PyPI. | |
on: | |
pull_request: | |
types: [closed] | |
branches: | |
- main | |
jobs: | |
create-release-and-publish: | |
if: github.event.pull_request.merged == true | |
runs-on: ubuntu-latest | |
environment: | |
name: PyPI | |
url: https://pypi.org/p/scrapling | |
permissions: | |
contents: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get PR title | |
id: pr_title | |
run: echo "title=${{ github.event.pull_request.title }}" >> $GITHUB_OUTPUT | |
- name: Save PR body to file | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const fs = require('fs'); | |
fs.writeFileSync('pr_body.md', context.payload.pull_request.body || ''); | |
- name: Extract version | |
id: extract_version | |
run: | | |
PR_TITLE="${{ steps.pr_title.outputs.title }}" | |
if [[ $PR_TITLE =~ ^v ]]; then | |
echo "version=$PR_TITLE" >> $GITHUB_OUTPUT | |
echo "Valid version format found in PR title: $PR_TITLE" | |
else | |
echo "Error: PR title '$PR_TITLE' must start with 'v' (e.g., 'v1.0.0') to create a release." | |
exit 1 | |
fi | |
- name: Create Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: ${{ steps.extract_version.outputs.version }} | |
name: Release ${{ steps.extract_version.outputs.version }} | |
body_path: pr_body.md | |
draft: false | |
prerelease: false | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Upgrade pip | |
run: python3 -m pip install --upgrade pip | |
- name: Install build | |
run: python3 -m pip install --upgrade build twine setuptools | |
- name: Build a binary wheel and a source tarball | |
run: python3 -m build --sdist --wheel --outdir dist/ | |
- name: Publish distribution 📦 to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |