-
Notifications
You must be signed in to change notification settings - Fork 401
160 lines (136 loc) · 5.2 KB
/
docs-build.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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
name: Build Docs
on:
push:
branches: ["master", "release/*"]
tags: ["*"]
pull_request:
branches: ["master", "release/*"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref }}
cancel-in-progress: ${{ ! (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/')) }}
defaults:
run:
shell: bash
env:
FREEZE_REQUIREMENTS: "1"
TORCH_URL: "https://download.pytorch.org/whl/cpu/torch_stable.html"
PYPI_CACHE: "_ci-cache_PyPI"
PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: 'python'
TOKENIZERS_PARALLELISM: false
SPHINX_FETCH_ASSETS: 1 # todo: consider not downloading on PRs
jobs:
docs-check:
if: github.event.pull_request.draft == false
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
check: [doctest, linkcheck]
env:
SPHINX_MOCK_REQUIREMENTS: 0
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: source cashing
uses: ./.github/actions/pull-caches
with:
requires: ${{ matrix.requires }}
pytorch-version: ${{ matrix.pytorch-version }}
pypi-dir: ${{ env.PYPI_CACHE }}
- name: Install package & dependencies
run: |
sudo apt-get update && sudo apt-get install -y cmake
pip --version
pip install . -U -r requirements/docs.txt --find-links $PYPI_CACHE -f $TORCH_URL
pip list
- name: Test Examples in Documentation
if: ${{ matrix.check == 'doctest' }}
working-directory: ./docs
run: |
make doctest
make coverage
- name: Check External Links
if: ${{ matrix.check == 'linkcheck' }}
working-directory: ./docs
run: make --jobs $(nproc) linkcheck SPHINXOPTS="--keep-going"
# ToDO: comment on PR if any link failed
#continue-on-error: true
make-html:
runs-on: ubuntu-22.04
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: source cashing
uses: ./.github/actions/pull-caches
with:
requires: ${{ matrix.requires }}
pytorch-version: ${{ matrix.pytorch-version }}
pypi-dir: ${{ env.PYPI_CACHE }}
# Note: This uses an internal pip API and may not always work
# https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow
- name: Cache pip
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements/docs.txt') }}
restore-keys: ${{ runner.os }}-pip-
- name: Install dependencies & package
run: |
# install Texlive, see https://linuxconfig.org/how-to-install-latex-on-ubuntu-20-04-focal-fossa-linux
sudo apt-get update
sudo apt-get install -y texlive-latex-extra dvipng texlive-pictures texlive-fonts-recommended cm-super
pip --version
pip install . -U -r requirements/docs.txt --find-links $PYPI_CACHE -f $TORCH_URL
pip list
shell: bash
- name: Make Documentation
working-directory: ./docs
run: make html --debug SPHINXOPTS="-W --keep-going"
- name: Upload built docs
uses: actions/upload-artifact@v3
if: github.event_name == 'push'
with:
name: docs-${{ github.sha }}
path: docs/build/
retention-days: ${{ steps.keep-artifact.outputs.DAYS }}
- name: update cashing
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
continue-on-error: true
uses: ./.github/actions/push-caches
with:
pypi-dir: ${{ env.PYPI_CACHE }}
deploy-docs:
needs: [docs-check, make-html]
if: github.repository_owner == 'Lightning-AI' && github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: docs-${{ github.sha }}
path: docs/build/
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCS_SA_KEY }}
- name: Setup gcloud
uses: google-github-actions/setup-gcloud@v1
with:
project_id: ${{ secrets.GCS_PROJECT }}
# Uploading docs to GCS, so they can be served on lightning.ai
- name: Upload docs/metrics/stable to GCS 🪣
if: startsWith(github.ref, 'refs/heads/release/')
run: gsutil -m rsync -d -R docs/build/html/ gs://lightning-docs-metrics/stable
# Uploading docs to GCS, so they can be served on lightning.ai
- name: Upload docs/metrics/latest to GCS 🪣
if: github.ref == 'refs/heads/master'
run: gsutil -m rsync -d -R docs/build/html/ gs://lightning-docs-metrics/latest
# Uploading docs to GCS, so they can be served on lightning.ai
- name: Upload docs/metrics/release to GCS 🪣
if: startsWith(github.ref, 'refs/tags/')
run: gsutil -m rsync -d -R docs/build/html/ gs://lightning-docs-metrics/${{ github.ref_name }}