Skip to content

Commit d9dca10

Browse files
add workflow
Signed-off-by: Ashwin Vaidya <[email protected]>
1 parent 4870aa3 commit d9dca10

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

.github/workflows/docs.yml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Build Docs
2+
3+
on:
4+
workflow_dispatch: # run on request (no need for PR)
5+
push:
6+
branches:
7+
- master
8+
9+
# Declare default permissions as read only.
10+
permissions: read-all
11+
12+
jobs:
13+
Build-Docs:
14+
runs-on: ubuntu-20.04
15+
permissions:
16+
contents: write
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v4
20+
- name: Set up Python
21+
uses: actions/setup-python@v5
22+
with:
23+
python-version: "3.10"
24+
- name: Install dependencies
25+
run: |
26+
python -m pip install --upgrade pip
27+
pip install -r docs/requirements.txt
28+
- name: Install and Generate Doxygen
29+
uses: mattnotmitt/[email protected]
30+
- name: Build Docs
31+
run: |
32+
cd docs
33+
make html
34+
- name: Create gh-pages branch
35+
run: |
36+
if [[ ${{github.event_name}} == 'workflow_dispatch' ]]; then
37+
echo RELEASE_VERSION="test_build" >> $GITHUB_ENV
38+
else
39+
echo RELEASE_VERSION=${GITHUB_REF#refs/*/} >> $GITHUB_ENV
40+
fi
41+
echo SOURCE_NAME=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT
42+
echo SOURCE_BRANCH=${GITHUB_REF#refs/heads/} >> $GITHUB_OUTPUT
43+
echo SOURCE_TAG=${GITHUB_REF#refs/tags/} >> $GITHUB_OUTPUT
44+
45+
existed_in_remote=$(git ls-remote --heads origin gh-pages)
46+
47+
if [[ -z ${existed_in_remote} ]]; then
48+
echo "Creating gh-pages branch"
49+
git config --local user.email "[email protected]"
50+
git config --local user.name "GitHub Action"
51+
git checkout --orphan gh-pages
52+
git reset --hard
53+
touch .nojekyll
54+
git add .nojekyll
55+
git commit -m "Initializing gh-pages branch"
56+
git push origin gh-pages
57+
git checkout ${{steps.branch_name.outputs.SOURCE_NAME}}
58+
echo "Created gh-pages branch"
59+
else
60+
echo "Branch gh-pages already exists"
61+
fi
62+
- name: Commit docs to gh-pages branch
63+
run: |
64+
git fetch
65+
git checkout gh-pages
66+
mkdir -p /tmp/docs_build
67+
cp -r docs/build/html/* /tmp/docs_build/
68+
rm -rf ${{ env.RELEASE_VERSION }}/*
69+
echo '<html><head><meta http-equiv="refresh" content="0; url=stable/" /></head></html>' > index.html
70+
mkdir -p ${{ env.RELEASE_VERSION }}
71+
cp -r /tmp/docs_build/* ./${{ env.RELEASE_VERSION }}
72+
rm -rf /tmp/docs_build
73+
git config --local user.email "[email protected]"
74+
git config --local user.name "GitHub Action"
75+
if [[ ${{ env.RELEASE_VERSION }} != 'test_build' ]]; then
76+
ln -sfn ${{ env.RELEASE_VERSION }} latest
77+
fi
78+
git add ./latest ${{ env.RELEASE_VERSION }}
79+
git commit -m "Update documentation" -a || true
80+
- name: Push changes
81+
uses: ad-m/github-push-action@master
82+
with:
83+
github_token: ${{ secrets.GITHUB_TOKEN }}
84+
branch: gh-pages

0 commit comments

Comments
 (0)