Skip to content

Commit d05b5a8

Browse files
authored
Enhance build configuration and artifact management in CI (#11)
* Add librsvg2 OS dependency * Expose logs * Simplify artifact names in build.yaml by removing reference prefix * Update artifact upload paths in build.yaml to include .tex files * Add dist_version parameter This way we can support branches while uploading/publishing artifacts * Add repository parameter * Add publish parameter
1 parent 4ec8fef commit d05b5a8

1 file changed

Lines changed: 54 additions & 33 deletions

File tree

.github/workflows/build.yaml

Lines changed: 54 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
run-name: build ${{ github.event.inputs.reference }}
1+
run-name: build ${{ github.event.inputs.repository }}:${{ github.event.inputs.reference }}
22
on:
33
workflow_dispatch:
44
inputs:
55
reference:
66
description: 'Commit reference from CPython repository'
77
required: true
88
default: '3.14'
9+
dist_version:
10+
description: 'Dist version (compatible with patchlevel.py output)'
11+
required: true
12+
default: '3.14'
13+
repository:
14+
description: 'Repository to checkout'
15+
required: false
16+
default: 'python/cpython'
17+
publish:
18+
description: 'Publish to GitHub Pages'
19+
required: false
20+
default: false
921
permissions:
1022
contents: write
1123
jobs:
@@ -17,12 +29,12 @@ jobs:
1729
python-version: 3
1830
- uses: actions/checkout@master
1931
with:
20-
repository: python/cpython
32+
repository: ${{ github.event.inputs.repository }}
2133
ref: ${{ github.event.inputs.reference }}
2234
- run: make venv
2335
working-directory: ./Doc
2436
- run: sudo apt-get update
25-
- run: sudo apt-get install -y latexmk texlive-xetex fonts-freefont-otf xindy texinfo
37+
- run: sudo apt-get install -y latexmk texlive-xetex fonts-freefont-otf xindy texinfo librsvg2-bin
2638
- run: make dist-html
2739
id: build-html
2840
working-directory: ./Doc
@@ -45,87 +57,96 @@ jobs:
4557
continue-on-error: true
4658
- uses: actions/upload-artifact@master
4759
with:
48-
name: ${{ github.event.inputs.reference }}-docs-pdf-a4.zip
49-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-pdf-a4.zip
60+
name: pdf-logs.zip
61+
path: |
62+
./Doc/build/latex/*.log
63+
./Doc/build/latex/*.tex
64+
- uses: actions/upload-artifact@master
65+
with:
66+
name: docs-pdf-a4.zip
67+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.zip
5068
if-no-files-found: ignore
5169
- uses: actions/upload-artifact@master
5270
with:
53-
name: ${{ github.event.inputs.reference }}-docs-pdf-a4.tar.bz2
54-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-pdf-a4.tar.bz2
71+
name: docs-pdf-a4.tar.bz2
72+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.tar.bz2
5573
if-no-files-found: ignore
5674
- uses: actions/upload-artifact@master
5775
with:
58-
name: ${{ github.event.inputs.reference }}-docs-html.zip
59-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-html.zip
76+
name: docs-html.zip
77+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-html.zip
6078
if-no-files-found: ignore
6179
- uses: actions/upload-artifact@master
6280
with:
63-
name: ${{ github.event.inputs.reference }}-docs-html.tar.bz2
64-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-html.tar.bz2
81+
name: docs-html.tar.bz2
82+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-html.tar.bz2
6583
if-no-files-found: ignore
6684
- uses: actions/upload-artifact@master
6785
with:
68-
name: ${{ github.event.inputs.reference }}-docs-text.zip
69-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-text.zip
86+
name: docs-text.zip
87+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-text.zip
7088
if-no-files-found: ignore
7189
- uses: actions/upload-artifact@master
7290
with:
73-
name: ${{ github.event.inputs.reference }}-docs-text.tar.bz2
74-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-text.tar.bz2
91+
name: docs-text.tar.bz2
92+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-text.tar.bz2
7593
if-no-files-found: ignore
7694
- uses: actions/upload-artifact@master
7795
with:
78-
name: ${{ github.event.inputs.reference }}-docs-texinfo.zip
79-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-texinfo.zip
96+
name: docs-texinfo.zip
97+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-texinfo.zip
8098
if-no-files-found: ignore
8199
- uses: actions/upload-artifact@master
82100
with:
83-
name: ${{ github.event.inputs.reference }}-docs-texinfo.tar.bz2
84-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-texinfo.tar.bz2
101+
name: docs-texinfo.tar.bz2
102+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-texinfo.tar.bz2
85103
if-no-files-found: ignore
86104
- uses: actions/upload-artifact@master
87105
with:
88-
name: ${{ github.event.inputs.reference }}-docs.epub
89-
path: ./Doc/dist/python-${{ github.event.inputs.reference }}-docs.epub
106+
name: docs.epub
107+
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs.epub
90108
if-no-files-found: ignore
91109
- name: Checkout gh-pages branch
110+
if: ${{ github.event.inputs.publish == 'true' }}
92111
uses: actions/checkout@v4
93112
with:
94113
ref: gh-pages
95114
path: gh-pages
96115
- name: Copy generated archives to gh-pages
116+
if: ${{ github.event.inputs.publish == 'true' }}
97117
run: |
98118
mkdir -p gh-pages/3
99119
# PDF
100-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-pdf-a4.zip gh-pages/3/python-${{ github.event.inputs.reference }}-docs-pdf-a4.zip 2>/dev/null || true
101-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-pdf-a4.tar.bz2 gh-pages/3/python-${{ github.event.inputs.reference }}-docs-pdf-a4.tar.bz2 2>/dev/null || true
120+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.zip gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.zip 2>/dev/null || true
121+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.tar.bz2 gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.tar.bz2 2>/dev/null || true
102122
# HTML
103-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-html.zip gh-pages/3/python-${{ github.event.inputs.reference }}-docs-html.zip 2>/dev/null || true
104-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-html.tar.bz2 gh-pages/3/python-${{ github.event.inputs.reference }}-docs-html.tar.bz2 2>/dev/null || true
123+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-html.zip gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-html.zip 2>/dev/null || true
124+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-html.tar.bz2 gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-html.tar.bz2 2>/dev/null || true
105125
# Text
106-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-text.zip gh-pages/3/python-${{ github.event.inputs.reference }}-docs-text.zip 2>/dev/null || true
107-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-text.tar.bz2 gh-pages/3/python-${{ github.event.inputs.reference }}-docs-text.tar.bz2 2>/dev/null || true
126+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-text.zip gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-text.zip 2>/dev/null || true
127+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-text.tar.bz2 gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-text.tar.bz2 2>/dev/null || true
108128
# Texinfo
109-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-texinfo.zip gh-pages/3/python-${{ github.event.inputs.reference }}-docs-texinfo.zip 2>/dev/null || true
110-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs-texinfo.tar.bz2 gh-pages/3/python-${{ github.event.inputs.reference }}-docs-texinfo.tar.bz2 2>/dev/null || true
129+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-texinfo.zip gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-texinfo.zip 2>/dev/null || true
130+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-texinfo.tar.bz2 gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs-texinfo.tar.bz2 2>/dev/null || true
111131
# EPUB
112-
cp ./Doc/dist/python-${{ github.event.inputs.reference }}-docs.epub gh-pages/3/python-${{ github.event.inputs.reference }}-docs.epub 2>/dev/null || true
132+
cp ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs.epub gh-pages/3/python-${{ github.event.inputs.dist_version }}-docs.epub 2>/dev/null || true
113133
- name: Commit generated archives
134+
if: ${{ github.event.inputs.publish == 'true' }}
114135
id: commit
115136
run: |
116137
cd gh-pages
117138
git config user.name github-actions
118139
git config user.email github-actions@github.com
119-
git add 3/python-${{ github.event.inputs.reference }}-docs-* || true
140+
git add 3/python-${{ github.event.inputs.dist_version }}-docs-* || true
120141
if git diff --cached --quiet; then
121142
echo "No documentation archives to commit"
122143
echo "has_changes=false" >> $GITHUB_OUTPUT
123144
else
124-
git commit -m "Update documentation archives for ${{ github.event.inputs.reference }}"
145+
git commit -m "Update documentation archives for ${{ github.event.inputs.dist_version }}"
125146
echo "has_changes=true" >> $GITHUB_OUTPUT
126147
fi
127148
- name: Push commit
128-
if: steps.commit.outputs.has_changes == 'true'
149+
if: ${{ github.event.inputs.publish == 'true' && steps.commit.outputs.has_changes == 'true' }}
129150
uses: ad-m/github-push-action@master
130151
with:
131152
branch: gh-pages

0 commit comments

Comments
 (0)