-
Notifications
You must be signed in to change notification settings - Fork 0
95 lines (91 loc) · 3.5 KB
/
Copy pathbuild.yml
File metadata and controls
95 lines (91 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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: 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.0.1
with:
persist-credentials: false
fetch-depth: 0
fetch-tags: true
ref: ${{ inputs.ref || github.ref }}
- name: Set up Python
uses: actions/setup-python@v7.0.0
with:
python-version: "3.13.15"
- name: Install dependencies
# renovate: datasource=pypi depName=hatch
run: pip install hatch==1.18.0
- name: Run tests
run: hatch run dev:pytest --junitxml=build/junit.xml --cov=reqstool_python_decorators --cov-report=xml:build/coverage.xml
- name: Build project
run: hatch build
- name: Self-apply own decorator processor to own src/tests
# Relies on `hatch build` (above) not cleaning build/ -- annotations.yml lands
# alongside the junit/coverage output from the "Run tests" step, and
# reqstool_config.yml expects to find both there. If hatch build ever starts
# cleaning build/, move the pytest output dir outside of it.
run: hatch run dev:python scripts/generate_annotations.py
- name: Install reqstool
uses: reqstool/.github/.github/actions/install-reqstool@a4203a58cec87861655512b6b277a859db385796 # 1.1.0
with:
reqstool-source: ${{ matrix.reqstool-source }}
- name: Validate reqstool spec completeness
# not yet available in the latest PyPI release; supplementary to (not a
# replacement for) the `reqstool status --fail-if-incomplete` gate below, which
# is the actual required check on the pypi leg
if: matrix.reqstool-source == 'main'
uses: reqstool/.github/.github/actions/validate-reqstool@a4203a58cec87861655512b6b277a859db385796 # 1.1.0
- name: Run reqstool status
# Required gate on both matrix legs -- fails the build unless every
# requirement is implemented and verified.
uses: reqstool/.github/.github/actions/reqstool-status@a4203a58cec87861655512b6b277a859db385796 # 1.1.0
with:
fail-if-incomplete: "true"
# Upload artifacts for later use
- name: Upload Artifacts
if: matrix.reqstool-source == 'pypi'
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ inputs.artifact-name || 'dist' }}
path: dist/
validate-openspec:
uses: reqstool/.github/.github/workflows/common-validate-openspec.yml@a4203a58cec87861655512b6b277a859db385796 # 1.1.0