Push to PyPI #46
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
name: CI | ||
on: | ||
push: | ||
branches: | ||
- main | ||
- release-* | ||
pull_request: {} | ||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: PyPI project version (e.g. v0.1.0) | ||
required: false | ||
env: | ||
# Common versions | ||
PYTHON_VERSION: '3.11.5' | ||
# The PyPi project version to push. The default is 0.0.0-gitdate-gitsha. | ||
PYPI_VERSION: ${{ inputs.version }} | ||
jobs: | ||
lint: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: Setup Hatch | ||
run: pipx install hatch==1.7.0 | ||
- name: Lint | ||
run: hatch run lint:check | ||
unit-test: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: Setup Hatch | ||
run: pipx install hatch==1.7.0 | ||
- name: Run Unit Tests | ||
run: hatch run test:unit | ||
build: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: Setup Hatch | ||
run: pipx install hatch==1.7.0 | ||
# If a version wasn't explicitly passed as a workflow_dispatch input we | ||
# default to version v0.0.0-<git-commit-date>-<git-short-sha>, for example | ||
# v0.0.0-20231101115142-1091066df799. This is a simple implementation of | ||
# Go's pseudo-versions: https://go.dev/ref/mod#pseudo-versions. | ||
- name: Set Default PyPI Project Version | ||
if: env.PYPI_VERSION == '' | ||
run: echo "PYPI_VERSION=v0.0.0-$(date -d@$(git show -s --format=%ct) +%Y%m%d%H%M%S)-$(git rev-parse --short=12 HEAD)" >> $GITHUB_ENV | ||
- name: Set PyPI Project Version | ||
run: hatch version ${{ env. PYPI_VERSION }} | ||
- name: Build Sdist and Wheel | ||
run: hatch build | ||
- name: Upload Sdist and Wheel to GitHub | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: module | ||
path: "dist/*" | ||
if-no-files-found: error | ||
retention-days: 1 | ||
publish: | ||
# Don't publish unless we were run with an explicit version. | ||
if: ${{ inputs.version != "" }} | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: Download Sdist and Wheel from GitHub | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: module | ||
path: "dist" | ||
- name: Publish to PyPI | ||
uses: pypa/[email protected] | ||
with: | ||
password: ${{ secrets.PYPI_API_TOKEN }} |