-
Notifications
You must be signed in to change notification settings - Fork 2
145 lines (124 loc) · 4.42 KB
/
ci-docs.yml
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
name: Docs CI
on:
push:
branches-ignore:
- 'dependabot/**'
tags:
- 'v*'
pull_request:
jobs:
docs-build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
# Matrix setup is a hacky way to include 'base' build in pull requests
# The entire matrix is set up and 'base' builds are pruned based
# on event name and final configuration (ubuntu, python3.7).
matrix:
python-version: [3.7, 3.8, 3.9, '3.10', 3.11]
python-architecture: ['x64']
os: [ubuntu-latest]
event:
- ${{ github.event_name }}
outputs:
on_main: ${{ steps.on_main.outputs.on-branch }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
# need history and tags for versioneer
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.python-architecture }}
- name: Get pip cache location
shell: bash
id: pip_cache
run: |
python -m pip install -U pip
python -m pip --version
echo ::set-output name=pip_cache_dir::$(python -m pip cache dir)
- name: Wheels cache
uses: actions/[email protected]
with:
path: ${{ steps.pip_cache.outputs.pip_cache_dir }}/wheels
key: ${{ runner.os }}-python-${{ matrix.python-version }}-${{ matrix.python-architecture }}-pip-wheels-v2-${{ github.sha }}
restore-keys: ${{ runner.os }}-python-${{ matrix.python-version }}-${{ matrix.python-architecture }}-pip-wheels-v2
- name: Install local, editable package
run: |
python -m pip install --upgrade pip wheel
python -m pip install -r docs_requirements.txt && python -m pip install -e .
- name: Build Documentation
run: make -C docs html
- name: Upload Documentation
uses: actions/upload-artifact@v3
with:
name: Documentation-${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.python-architecture }}
retention-days: 1
path: docs/_build/html
- name: Check if on main
if: ${{ github.event_name == 'push' }}
id: on_main
uses: ./.github/actions/on-branch
with:
branch: main
docs-deploy:
strategy:
fail-fast: false
matrix:
python-version: [3.7]
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
needs: [docs-build]
if: github.event_name == 'push' &&
(github.ref == 'refs/heads/main' ||
(startsWith(github.ref, 'refs/tags/') && contains(needs.*.outputs.on_main, 'main'))
)
steps:
- name: Checkout docs
uses: actions/checkout@v3
with:
ref: gh-pages
- name: Fetch tags
run: git fetch origin +refs/tags/*:refs/tags/*
- name: Download branch docs
uses: actions/download-artifact@v3
with:
name: Documentation-${{ matrix.os }}-${{ matrix.python-version }}-x64
path: _built_docs/${{ github.ref }}
if: github.ref == 'refs/heads/main'
- name: Update branch docs
shell: bash
run: |
mkdir -p branch
rm -rf "branch/${GITHUB_REF##*/}"
mv -f "_built_docs/${GITHUB_REF}" branch/
if: github.ref == 'refs/heads/main'
- name: Download main docs
uses: actions/download-artifact@v3
with:
name: Documentation-${{ matrix.os }}-${{ matrix.python-version }}-x64
path: _built_docs/${{ github.ref }}
if: startsWith(github.ref, 'refs/tags/') && contains(needs.*.outputs.on_main, 'main')
- name: Update main docs
shell: bash
run: |
mkdir -p tag
# Save docs to tags dir for this tag
tag_name=$(echo "${GITHUB_REF}" | sed -r 's;refs/tags/(.*?)$;\1;')
cp -r "_built_docs/${GITHUB_REF}/" "tag/$tag_name/"
# don't update main docs if tag is old
if [ $(git tag --contains "$tag_name" | wc -l) -lt 2 ]; then
cp -r "_built_docs/${GITHUB_REF}/"* ./
fi
rm -rf "_built_docs/"
if: startsWith(github.ref, 'refs/tags/') && contains(needs.*.outputs.on_main, 'main')
- name: Commit documentation changes
run: |
git add .
git config --local user.name "Documentation Bot"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -m "Docs changes for $GITHUB_REF $GITHUB_SHA" || true
git push