-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpython-package-mkdocs-gh-deploy.yml
More file actions
156 lines (156 loc) · 5.33 KB
/
python-package-mkdocs-gh-deploy.yml
File metadata and controls
156 lines (156 loc) · 5.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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
---
name: Build and deployment of MkDocs documentation
on:
workflow_call:
inputs:
package-path:
required: false
type: string
description: Path to a Python package or project
default: .
python-version:
required: false
type: string
description: Python version to use (not applicable if uv.lock is present)
default: 3.x
uv-version:
required: false
type: string
description: Version of uv to use (applicable only if uv.lock is present)
default: latest
mkdocs-config-file:
required: false
type: string
description: MkDocs config file
default: mkdocs.yml
mkdocs-strict:
required: false
type: boolean
description: Enable strict mode for MkDocs build
default: true
mkdocs-theme:
required: false
type: string
description: Theme to use for MkDocs (mkdocs or readthedocs)
default: mkdocs
runs-on:
required: false
type: string
description: GitHub Actions runner to use
default: ubuntu-latest
secrets:
GH_TOKEN:
required: false
description: GitHub token
workflow_dispatch: # checkov:skip=CKV_GHA_7:workflow_dispatch inputs are required for MkDocs build settings
inputs:
package-path:
required: false
type: string
description: Path to a Python package or project
default: .
python-version:
required: false
type: string
description: Python version to use (not applicable if uv.lock is present)
default: 3.x
uv-version:
required: false
type: string
description: Version of uv to use (applicable only if uv.lock is present)
default: latest
mkdocs-config-file:
required: false
type: string
description: MkDocs config file
default: mkdocs.yml
mkdocs-strict:
required: false
type: boolean
description: Enable strict mode for MkDocs build
default: true
mkdocs-theme:
required: false
type: string
description: Theme to use for MkDocs (mkdocs or readthedocs)
default: mkdocs
runs-on:
required: false
type: string
description: GitHub Actions runner to use
default: ubuntu-latest
permissions:
contents: write
defaults:
run:
shell: bash -euo pipefail {0}
working-directory: .
jobs:
build-and-deploy:
runs-on: ${{ inputs.runs-on }}
env:
MKDOCS_SITE_DIR: ${{ inputs.package-path }}/site
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 1
persist-credentials: false
- name: Detect uv.lock or poetry.lock
working-directory: ${{ inputs.package-path }}
run: |
if [[ -f uv.lock ]]; then
echo "LOCK_FILE=uv.lock" >> "${GITHUB_ENV}"
elif [[ -f poetry.lock ]]; then
echo "LOCK_FILE=poetry.lock" >> "${GITHUB_ENV}"
else
echo "LOCK_FILE=" >> "${GITHUB_ENV}"
fi
- name: Set up uv
if: env.LOCK_FILE == 'uv.lock'
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ inputs.uv-version }}
- name: Install packages using uv
if: env.LOCK_FILE == 'uv.lock'
working-directory: ${{ inputs.package-path }}
run: |
uv sync --all-groups
tee -a "${GITHUB_ENV}" <<< "EXECUTOR=uv run --directory ${PWD}"
- name: Set up Python
if: env.LOCK_FILE != 'uv.lock'
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ inputs.python-version }}
- name: Install packages
if: env.LOCK_FILE != 'uv.lock'
working-directory: ${{ inputs.package-path }}
run: |
pip install -U --no-cache-dir pip
if [[ "${LOCK_FILE}" == "poetry.lock" ]]; then
pip install --no-cache-dir poetry
poetry lock --no-interaction
poetry install --no-interaction --no-root
tee -a "${GITHUB_ENV}" <<< "EXECUTOR=poetry run -C ${PWD}"
else
pip install -U --no-cache-dir mkdocs
tee -a "${GITHUB_ENV}" <<< "EXECUTOR="
fi
- name: Build MkDocs site
working-directory: ${{ inputs.package-path }}
env:
MKDOCS_CONFIG_FILE: ${{ inputs.mkdocs-config-file }}
MKDOCS_STRICT: ${{ inputs.mkdocs-strict && 'true' || null }}
MKDOCS_THEME: ${{ inputs.mkdocs-theme }}
run: | # zizmor: ignore[template-injection]
args=(
${MKDOCS_CONFIG_FILE:+--config-file="${MKDOCS_CONFIG_FILE}"}
${MKDOCS_STRICT:+--strict}
${MKDOCS_THEME:+--theme="${MKDOCS_THEME}"}
)
${{ env.EXECUTOR }} mkdocs build --clean --site-dir="${MKDOCS_SITE_DIR}" "${args[@]:-}"
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0
with:
github_token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }} # zizmor: ignore[secrets-outside-env] caller-provided secret
publish_dir: ${{ env.MKDOCS_SITE_DIR }}