Skip to content

Commit

Permalink
release workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
youknowone committed Oct 30, 2024
1 parent 281fd28 commit add5575
Showing 1 changed file with 121 additions and 0 deletions.
121 changes: 121 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: Tests

on:
push:
tags:
- '*'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
generate-test-matrix:
name: Generate test matrix
runs-on: ubuntu-latest
outputs:
folders: ${{ steps.get-folders.outputs.folders }}
steps:
- name: Check out code from Github
uses: actions/checkout@v4
- name: Get folders with tests
id: get-folders
run: |
FOLDERS=$(find . -maxdepth 2 -type d -name 'tests' ! -path '*/distutils/*' \
| cut -d "/" -f2 | sort -u \
| jq -Rsc 'split("\n") | map( select(length > 0) )')
echo "folders: ${FOLDERS}"
echo "folders=${FOLDERS}" >> $GITHUB_OUTPUT
build:
name: Run build
runs-on: ubuntu-latest
needs: [generate-test-matrix]
strategy:
fail-fast: false
matrix:
folder: ${{ fromJson(needs.generate-test-matrix.outputs.folders) }}
version: ["3.13"]
steps:
- name: Check out code from Github
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.version }}
check-latest: true
- name: Run tests
run: |
cd ${{ matrix.folder }}
python -m build
- name: Upload packages
uses: actions/upload-artifact@v4
with:
name: dist-${{ matrix.folder }}
path: ${{ matrix.folder }}/dist

publish-to-pypi:
name: Release
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
needs: [build]
permissions:
# Use to sign the release artifacts
id-token: write
# Used to upload release artifacts
contents: write
# Used to generate artifact attestation
attestations: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1


github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
needs:
- publish-to-pypi
runs-on: ubuntu-latest

permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create
'${{ github.ref_name }}'
--repo '${{ github.repository }}'
--notes ""
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: >-
gh release upload
'${{ github.ref_name }}' dist/**
--repo '${{ github.repository }}'

0 comments on commit add5575

Please sign in to comment.