Workflow file for this run
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
# Use trusted publisher auth on PyPI: https://docs.pypi.org/trusted-publishers/adding-a-publisher/ | |
# or requires secrets.PYPI_API_TOKEN, create from your PyPi account settings. | |
# | |
# Creating pypi environment: | |
# - GitHub project settings > Environment > new > "pypi", and save it. | |
# | |
# Configuring trusted publisher: | |
# - Adds the new publisher to https://pypi.org/manage/account/publishing/ | |
# | |
# Alternatively, uses PyPI API token (in your PyPI account settings): | |
# 1. Do a first publish either manually or using an unscoped token | |
# 2. Create a scoped token with: | |
# - Permissions: Update Package | |
# - Scope: Project: <your PyPI project name> | |
# 3. Adds the token in the GitHub's pypi environemnt secret: | |
# | |
# Workflow notes: | |
# - Each job executed by the matrix upload its dist/ to the artifact store. | |
# - All those dist/ are downloaded from the artifact store by the final publish to PyPI steps. | |
# See https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ | |
name: Publish package to PyPI.org | |
on: | |
# This workflow is triggered when a release is made. | |
# See https://github.com/actions/starter-workflows/blob/main/ci/python-publish.yml | |
release: | |
types: [published] | |
permissions: | |
contents: read | |
jobs: | |
build-and-test: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
# See https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software | |
- windows-latest | |
python-version: | |
- '3.9' | |
# - '3.10' | |
# - '3.11' | |
continue-on-error: | |
- false | |
runs-on: "${{ matrix.os }}" | |
continue-on-error: "${{ matrix.continue-on-error }}" | |
steps: | |
- run: echo "The job was automatically triggered by a ${{ github.event_name }} event." | |
- run: echo "This job is now running on a ${{ runner.os }} server." | |
- run: echo "The branch name is ${{ github.ref }} and the repository is ${{ github.repository }}." | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ matrix.python-version }}" | |
- name: install dependencies | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
pip install flit | |
flit install --extras=all | |
- name: run pytest | |
timeout-minutes: 5 | |
run: pytest . | |
- name: Build binary wheel and source tarball | |
run: | | |
flit build | |
- name: Store the distribution packages | |
# See https://github.com/actions/upload-artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
publish-to-pypi: | |
name: >- | |
Publish Python distribution to PyPI | |
needs: | |
- build-and-test | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
# url: https://pypi.org/p/win32_window_monitor | |
url: https://test.pypi.org/p/win32_window_monitor | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download all the dists | |
# dist/ for each O.S. have been uploaded in build-and-test using actions/upload-artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Publish distribution to PyPI | |
# See https://github.com/pypa/gh-action-pypi-publish | |
# No password, use trusted publisher auth: https://docs.pypi.org/trusted-publishers/adding-a-publisher/ | |
# (requires the project to exist on PyPI, so one manual publish to initialize the project) | |
# password: ${{ secrets.PYPI_API_TOKEN }} | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ |