Skip to content

ci(release): adopt the verified release flow (#99) #365

ci(release): adopt the verified release flow (#99)

ci(release): adopt the verified release flow (#99) #365

Workflow file for this run

name: Build PyPI
on:
workflow_call:
inputs:
ref:
description: "Branch, tag or SHA to build. Empty = the caller's ref."
required: false
type: string
default: ""
artifact-name:
description: >
Name to upload the build output under. The release flow runs this
workflow twice in one run -- once on the branch, once on the tag -- and
upload-artifact rejects a duplicate name.
required: false
type: string
default: "dist"
workflow_dispatch:
push:
branches:
- main
pull_request:
types:
- opened
- reopened
- synchronize
jobs:
linting:
name: Reuse linting job
uses: ./.github/workflows/lint.yml
build:
needs: linting
runs-on: ubuntu-latest
steps:
# Full history and tags: hatch-vcs derives the version from git state, so a
# shallow clone would build the wrong number rather than fail.
- name: Check out source repository
uses: actions/checkout@v7
with:
persist-credentials: false
fetch-depth: 0
fetch-tags: true
ref: ${{ inputs.ref || github.ref }}
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: "3.13"
- name: Install dependencies
run: pip install hatch
- name: Build wheel (used by e2e tests via PIP_FIND_LINKS)
run: hatch build --target wheel
- name: Run tests
run: hatch run dev:pytest --junitxml=build/junit.xml --cov=reqstool_python_hatch_plugin --cov-report=xml:build/coverage.xml
- name: Build project
run: hatch build
# Upload artifacts for later use
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: ${{ inputs.artifact-name || 'dist' }}
path: dist/