Skip to content

build m-aciek/cpython:pdf-svg-dedicated-venv-list-depth #51

build m-aciek/cpython:pdf-svg-dedicated-venv-list-depth

build m-aciek/cpython:pdf-svg-dedicated-venv-list-depth #51

Workflow file for this run

run-name: build ${{ github.event.inputs.repository }}:${{ github.event.inputs.reference }}
on:
workflow_dispatch:
inputs:
reference:
description: 'Commit reference from CPython repository'
required: true
default: '3.14'
dist_version:
description: 'Dist version (compatible with patchlevel.py output)'
required: true
default: '3.14'
repository:
description: 'Repository to checkout'
required: false
default: 'python/cpython'
publish:
description: 'Publish to GitHub Pages'
required: false
default: false
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@master
with:
python-version: 3
- uses: actions/checkout@master
with:
repository: ${{ github.event.inputs.repository }}
ref: ${{ github.event.inputs.reference }}
- run: make venv
working-directory: ./Doc
- run: sudo apt-get update
- run: sudo apt-get install -y latexmk texlive-xetex fonts-freefont-otf xindy texinfo librsvg2-bin
- run: make dist-html
id: build-html
working-directory: ./Doc
continue-on-error: true
- run: make dist-text
id: build-text
working-directory: ./Doc
continue-on-error: true
- run: make dist-texinfo
id: build-texinfo
working-directory: ./Doc
continue-on-error: true
- run: make dist-epub
id: build-epub
working-directory: ./Doc
continue-on-error: true
- run: make dist-pdf
id: build-pdf
working-directory: ./Doc
continue-on-error: true
- uses: actions/upload-artifact@master
with:
name: pdf-logs.zip
path: |
./Doc/build/latex/*.log
./Doc/build/latex/*.tex
- uses: actions/upload-artifact@master
with:
name: docs-pdf-a4.zip
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.zip
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-pdf-a4.tar.bz2
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-pdf-a4.tar.bz2
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-html.zip
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-html.zip
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-html.tar.bz2
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-html.tar.bz2
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-text.zip
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-text.zip
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-text.tar.bz2
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-text.tar.bz2
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-texinfo.zip
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-texinfo.zip
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs-texinfo.tar.bz2
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs-texinfo.tar.bz2
if-no-files-found: ignore
- uses: actions/upload-artifact@master
with:
name: docs.epub
path: ./Doc/dist/python-${{ github.event.inputs.dist_version }}-docs.epub
if-no-files-found: ignore
- name: Checkout gh-pages branch
if: ${{ github.event.inputs.publish == 'true' }}
uses: actions/checkout@v4
with:
ref: gh-pages
path: gh-pages
- name: Copy generated archives to gh-pages
if: ${{ github.event.inputs.publish == 'true' }}
run: |
mkdir -p gh-pages/3
# PDF
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
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
# HTML
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
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
# Text
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
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
# Texinfo
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
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
# EPUB
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
- name: Commit generated archives
if: ${{ github.event.inputs.publish == 'true' }}
id: commit
run: |
cd gh-pages
git config user.name github-actions
git config user.email github-actions@github.com
git add 3/python-${{ github.event.inputs.dist_version }}-docs-* || true
if git diff --cached --quiet; then
echo "No documentation archives to commit"
echo "has_changes=false" >> $GITHUB_OUTPUT
else
git commit -m "Update documentation archives for ${{ github.event.inputs.dist_version }}"
echo "has_changes=true" >> $GITHUB_OUTPUT
fi
- name: Push commit
if: ${{ github.event.inputs.publish == 'true' && steps.commit.outputs.has_changes == 'true' }}
uses: ad-m/github-push-action@master
with:
branch: gh-pages
github_token: ${{ secrets.GITHUB_TOKEN }}
directory: gh-pages
- name: Check for build failures
if: always()
run: |
failed_formats=()
if [ "${{ steps.build-html.outcome }}" == "failure" ]; then
failed_formats+=("HTML")
fi
if [ "${{ steps.build-text.outcome }}" == "failure" ]; then
failed_formats+=("Text")
fi
if [ "${{ steps.build-texinfo.outcome }}" == "failure" ]; then
failed_formats+=("Texinfo")
fi
if [ "${{ steps.build-epub.outcome }}" == "failure" ]; then
failed_formats+=("EPUB")
fi
if [ "${{ steps.build-pdf.outcome }}" == "failure" ]; then
failed_formats+=("PDF")
fi
if [ ${#failed_formats[@]} -gt 0 ]; then
echo "The following format(s) failed to build: ${failed_formats[*]}"
exit 1
else
echo "All formats built successfully"
fi