-
Notifications
You must be signed in to change notification settings - Fork 11
130 lines (124 loc) · 4.33 KB
/
push.yaml
File metadata and controls
130 lines (124 loc) · 4.33 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Push to main
on:
push:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: pip install ruff>=0.9.0
- run: ruff format --check .
run-context:
name: Run context
runs-on: ubuntu-latest
outputs:
run_id: ${{ steps.run-context.outputs.run_id }}
github_run_url: ${{ steps.run-context.outputs.github_run_url }}
env:
MODAL_ENVIRONMENT: main
US_DATA_MODAL_APP_PREFIX: us-data
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.14"
- name: Resolve run context
id: run-context
run: python .github/scripts/resolve_run_context.py
# ── Documentation ──────────────────────────────────────────
docs:
name: Documentation
runs-on: ubuntu-latest
if: |
github.event.head_commit.message != 'Update publication candidate' &&
github.event.head_commit.message != 'Finalize package version'
permissions:
contents: write
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.14"
- uses: actions/setup-node@v6
with:
node-version: "24"
- uses: astral-sh/setup-uv@v8.1.0
- run: uv sync --dev
- name: Generate pipeline documentation artifacts
run: uv run python scripts/extract_pipeline_docs.py
- name: Build documentation
run: uv run make documentation
env:
BASE_URL: /policyengine-us-data
- name: Deploy to GitHub Pages
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: docs/_build/html
clean: true
# ── Publication candidate scope + changelog snapshot on ordinary pushes ──
versioning:
name: Versioning
runs-on: ubuntu-latest
needs: run-context
if: |
github.event.head_commit.message != 'Update publication candidate' &&
github.event.head_commit.message != 'Finalize package version'
outputs:
version_sha: ${{ steps.version-commit.outputs.sha }}
steps:
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v3
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: actions/checkout@v6
with:
token: ${{ steps.app-token.outputs.token }}
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.14"
- uses: astral-sh/setup-uv@v8.1.0
- name: Snapshot candidate changelog fragments
env:
US_DATA_RUN_ID: ${{ needs.run-context.outputs.run_id }}
run: |
python .github/bump_version.py
- name: Generate pipeline documentation artifacts
run: uv run --no-sync --with pyyaml python scripts/extract_pipeline_docs.py
- name: Update lockfile
run: uv lock
- name: Update changelog
uses: EndBug/add-and-commit@v10
with:
add: "."
message: Update publication candidate
- name: Capture version commit
id: version-commit
run: echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
# ── Full publication pipeline ───────────────────────────────
launch-pipeline:
name: Launch publication pipeline
runs-on: ubuntu-latest
needs:
- lint
- run-context
if: github.event.head_commit.message == 'Update publication candidate'
permissions:
actions: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Dispatch pipeline workflow
env:
GH_TOKEN: ${{ github.token }}
US_DATA_RUN_ID: ${{ needs.run-context.outputs.run_id }}
SOURCE_SHA: ${{ github.sha }}
run: |
export CANDIDATE_VERSION="$(python .github/scripts/fetch_publication_scope.py candidate_scope)"
export BASE_RELEASE_VERSION="$(python .github/scripts/fetch_publication_scope.py base_release_version)"
export RELEASE_BUMP="$(python .github/scripts/fetch_publication_scope.py release_bump)"
bash .github/scripts/dispatch_publication_pipeline.sh