Skip to content

Commit bbc29f6

Browse files
committed
Attempt #1 github actions build
1 parent bc4c61f commit bbc29f6

File tree

2 files changed

+141
-0
lines changed

2 files changed

+141
-0
lines changed

.github/workflows/docs.yml

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# From: https://github.com/coderefinery/sphinx-lesson/blob/master/.github/workflows/sphinx.yml
2+
3+
name: docs
4+
on: [push, pull_request]
5+
6+
env:
7+
DEFAULT_BRANCH: "main"
8+
#SPHINXOPTS: "-W --keep-going -T"
9+
# ^-- If these SPHINXOPTS are enabled, then be strict about the builds and fail on any warnings
10+
11+
jobs:
12+
build-and-deploy:
13+
name: Build and gh-pages
14+
runs-on: ubuntu-latest
15+
steps:
16+
# https://github.com/marketplace/actions/checkout
17+
- uses: actions/checkout@v2
18+
with:
19+
fetch-depth: 0
20+
lfs: true
21+
# https://github.com/marketplace/actions/setup-python
22+
# ^-- This gives info on matrix testing.
23+
- name: Install Python
24+
uses: actions/setup-python@v2
25+
with:
26+
python-version: 3.8
27+
# https://docs.github.com/en/actions/guides/building-and-testing-python#caching-dependencies
28+
# ^-- How to set up caching for pip on Ubuntu
29+
- name: Cache pip
30+
uses: actions/cache@v2
31+
with:
32+
path: ~/.cache/pip
33+
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
34+
restore-keys: |
35+
${{ runner.os }}-pip-
36+
${{ runner.os }}-
37+
# https://docs.github.com/en/actions/guides/building-and-testing-python#installing-dependencies
38+
# ^-- This gives info on installing dependencies with pip
39+
- name: Install dependencies
40+
run: |
41+
python -m pip install --upgrade pip
42+
pip install -r requirements-docs.txt
43+
- name: Debugging information
44+
run: |
45+
echo "github.ref:" ${{github.ref}}
46+
echo "github.event_name:" ${{github.event_name}}
47+
echo "github.head_ref:" ${{github.head_ref}}
48+
echo "github.base_ref:" ${{github.base_ref}}
49+
set -x
50+
git rev-parse --abbrev-ref HEAD
51+
git branch
52+
git branch -a
53+
git remote -v
54+
python -V
55+
pip list --not-required
56+
pip list
57+
# Build
58+
- uses: ammaraskar/sphinx-problem-matcher@master
59+
- name: Build Sphinx docs
60+
run: |
61+
make dirhtml
62+
# This fixes broken copy button icons, as explained in
63+
# https://github.com/coderefinery/sphinx-lesson/issues/50
64+
# https://github.com/executablebooks/sphinx-copybutton/issues/110
65+
# This can be removed once these PRs are accepted (but the
66+
# fixes also need to propagate to other themes):
67+
# https://github.com/sphinx-doc/sphinx/pull/8524
68+
# https://github.com/readthedocs/sphinx_rtd_theme/pull/1025
69+
sed -i 's/url_root="#"/url_root=""/' _build/dirhtml/index.html || true
70+
# The following supports building all branches and combining on
71+
# gh-pages
72+
73+
# Clone and set up the old gh-pages branch
74+
- name: Clone old gh-pages
75+
if: ${{ github.event_name == 'push' }}
76+
run: |
77+
set -x
78+
git fetch
79+
( git branch gh-pages remotes/origin/gh-pages && git clone . --branch=gh-pages _gh-pages/ ) || mkdir _gh-pages
80+
rm -rf _gh-pages/.git/
81+
mkdir -p _gh-pages/branch/
82+
# If a push and default branch, copy build to _gh-pages/ as the "main"
83+
# deployment.
84+
- name: Copy new build (default branch)
85+
if: |
86+
contains(github.event_name, 'push') &&
87+
contains(github.ref, env.DEFAULT_BRANCH)
88+
run: |
89+
set -x
90+
# Delete everything under _gh-pages/ that is from the
91+
# primary branch deployment. Eicludes the other branches
92+
# _gh-pages/branch-* paths, and not including
93+
# _gh-pages itself.
94+
find _gh-pages/ -mindepth 1 ! -path '_gh-pages/branch*' -delete
95+
rsync -a _build/dirhtml/ _gh-pages/
96+
# If a push and not on default branch, then copy the build to
97+
# _gh-pages/branch/$brname (transforming '/' into '--')
98+
- name: Copy new build (branch)
99+
if: |
100+
contains(github.event_name, 'push') &&
101+
!contains(github.ref, env.DEFAULT_BRANCH)
102+
run: |
103+
set -x
104+
#brname=$(git rev-parse --abbrev-ref HEAD)
105+
brname="${{github.ref}}"
106+
brname="${brname##refs/heads/}"
107+
brdir=${brname//\//--} # replace '/' with '--'
108+
rm -rf _gh-pages/branch/${brdir}
109+
rsync -a _build/dirhtml/ _gh-pages/branch/${brdir}
110+
# Go through each branch in _gh-pages/branch/, if it's not a
111+
# ref, then delete it.
112+
- name: Delete old feature branches
113+
if: ${{ github.event_name == 'push' }}
114+
run: |
115+
set -x
116+
for brdir in `ls _gh-pages/branch/` ; do
117+
brname=${brdir//--/\/} # replace '--' with '/'
118+
if ! git show-ref remotes/origin/$brname ; then
119+
echo "Removing $brdir"
120+
rm -r _gh-pages/branch/$brdir/
121+
fi
122+
done
123+
# Add the .nojekyll file
124+
- name: nojekyll
125+
if: ${{ github.event_name == 'push' }}
126+
run: |
127+
touch _gh-pages/.nojekyll
128+
# Deploy
129+
# https://github.com/peaceiris/actions-gh-pages
130+
- name: Deploy
131+
uses: peaceiris/actions-gh-pages@v3
132+
if: ${{ github.event_name == 'push' }}
133+
#if: ${{ success() && github.event_name == 'push' && github.ref == 'refs/heads/$defaultBranch' }}
134+
with:
135+
publish_branch: gh-pages
136+
github_token: ${{ secrets.GITHUB_TOKEN }}
137+
publish_dir: _gh-pages/
138+
force_orphan: true

requirements-docs.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
numpydoc
2+
pydata-sphinx-theme
3+
sphinx>=4.5.0

0 commit comments

Comments
 (0)