Skip to content

chore(github-actions): pin reqstool/.github references to 1.0.0 #458

chore(github-actions): pin reqstool/.github references to 1.0.0

chore(github-actions): pin reqstool/.github references to 1.0.0 #458

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
permissions:
contents: read
jobs:
linting:
name: Reuse linting job
uses: ./.github/workflows/lint.yml
build:
needs: linting
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
reqstool-source: [pypi, main]
steps:
# Full history and tags: poetry-dynamic-versioning 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 and configure Poetry
uses: snok/install-poetry@a783c322200f0519c7926aa6faa857c4e23e9263 # v1
with:
version: 2.4.1
virtualenvs-create: true
- name: Install poetry-dynamic-versioning
run: poetry self add "poetry-dynamic-versioning[plugin]"
- name: Install dependencies
run: poetry install --with dev
- name: Build wheel (used by e2e tests)
run: poetry build --format wheel
- name: Install plugin into Poetry (activates it for e2e tests)
run: poetry self add $(ls $PWD/dist/reqstool_python_poetry_plugin-*.whl | tail -1)
- name: Run tests
run: poetry run pytest --junitxml=build/junit.xml --cov --cov-report=xml:build/coverage.xml
- name: Build project
run: poetry build
- name: Install reqstool
uses: reqstool/.github/.github/actions/install-reqstool@ef815eae0bca7160cdc714126cac73f76d638b39 # 1.0.0
with:
reqstool-source: ${{ matrix.reqstool-source }}
- name: Validate reqstool spec completeness
# not yet available in the latest PyPI release
if: matrix.reqstool-source == 'main'
uses: reqstool/.github/.github/actions/validate-reqstool@ef815eae0bca7160cdc714126cac73f76d638b39 # 1.0.0
- name: Run reqstool status
uses: reqstool/.github/.github/actions/reqstool-status@ef815eae0bca7160cdc714126cac73f76d638b39 # 1.0.0
with:
fail-if-incomplete: "true"
# Upload artifacts for later use
- name: Upload Artifacts
if: matrix.reqstool-source == 'pypi'
uses: actions/upload-artifact@v7
with:
name: ${{ inputs.artifact-name || 'dist' }}
path: dist/
validate-openspec:
uses: reqstool/.github/.github/workflows/common-validate-openspec.yml@ef815eae0bca7160cdc714126cac73f76d638b39 # 1.0.0