Added sphinx docs build pipeline for GitHub pages on release
This commit is contained in:
60
.github/workflows/build-sphinx.yml
vendored
Normal file
60
.github/workflows/build-sphinx.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
name: build-sphinx-to-github-pages
|
||||
|
||||
env:
|
||||
GITHUB_ACTOR: Autonomous-Resilient-Cyber-Defence
|
||||
GITHUB_REPOSITORY: Autonomous-Resilient-Cyber-Defence/PrimAITE
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.10"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install python dev
|
||||
run: |
|
||||
set -x
|
||||
sudo apt-get update
|
||||
sudo add-apt-repository ppa:deadsnakes/ppa -y
|
||||
sudo apt install python${{ matrix.python-version}}-dev -y
|
||||
|
||||
- name: Install Git
|
||||
run: |
|
||||
set -x
|
||||
sudo apt-get install -y git
|
||||
shell: bash
|
||||
|
||||
- name: Set pip, wheel, setuptools versions
|
||||
run: |
|
||||
python -m pip install --upgrade pip==23.0.1
|
||||
pip install wheel==0.38.4 --upgrade
|
||||
pip install setuptools==66 --upgrade
|
||||
pip install build
|
||||
|
||||
- name: Install PrimAITE for docs autosummary
|
||||
run: |
|
||||
set -x
|
||||
python -m pip install -e .[dev]
|
||||
|
||||
- name: Run build script for Sphinx pages
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
run: |
|
||||
set -x
|
||||
bash $PWD/docs/build-sphinx-docs-to-github-pages.sh
|
||||
67
docs/build-sphinx-docs-to-github-pages.sh
Normal file
67
docs/build-sphinx-docs-to-github-pages.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
set -x
|
||||
|
||||
apt-get update
|
||||
apt-get -y install git rsync python3-sphinx
|
||||
|
||||
pwd ls -lah
|
||||
export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
|
||||
|
||||
##############
|
||||
# BUILD DOCS #
|
||||
##############
|
||||
|
||||
cd docs
|
||||
# Python Sphinx, configured with source/conf.py
|
||||
# See https://www.sphinx-doc.org/
|
||||
make clean
|
||||
make html
|
||||
|
||||
cd ..
|
||||
#######################
|
||||
# Update GitHub Pages #
|
||||
#######################
|
||||
|
||||
git config --global user.name "${GITHUB_ACTOR}"
|
||||
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||
|
||||
docroot=`mktemp -d`
|
||||
|
||||
rsync -av $PWD/docs/_build/html/ "${docroot}/"
|
||||
|
||||
pushd "${docroot}"
|
||||
|
||||
git init
|
||||
git remote add deploy "https://token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
|
||||
git checkout -b sphinx-docs-github-pages
|
||||
|
||||
# Adds .nojekyll file to the root to signal to GitHub that
|
||||
# directories that start with an underscore (_) can remain
|
||||
touch .nojekyll
|
||||
|
||||
# Add README
|
||||
cat > README.md <<EOF
|
||||
# README for the Sphinx Docs GitHub Pages Branch
|
||||
This branch is simply a cache for the website served from https://Autonomous-Resilient-Cyber-Defence.github.io/PrimAITE/,
|
||||
and is not intended to be viewed on github.com.
|
||||
For more information on how this site is built using Sphinx, Read the Docs, GitHub Actions/Pages, and demo
|
||||
implementation from https://github.com/annegentle, see:
|
||||
* https://www.docslikecode.com/articles/github-pages-python-sphinx/
|
||||
* https://tech.michaelaltfield.net/2020/07/18/sphinx-rtd-github-pages-1
|
||||
* https://github.com/annegentle/create-demo
|
||||
EOF
|
||||
|
||||
# Copy the resulting html pages built from Sphinx to the sphinx-docs-github-pages branch
|
||||
git add .
|
||||
|
||||
# Make a commit with changes and any new files
|
||||
msg="Updating Docs for commit ${GITHUB_SHA} made on `date -d"@${SOURCE_DATE_EPOCH}" --iso-8601=seconds` from ${GITHUB_REF} by ${GITHUB_ACTOR}"
|
||||
git commit -am "${msg}"
|
||||
|
||||
# overwrite the contents of the sphinx-docs-github-pages branch on our github.com repo
|
||||
git push deploy sphinx-docs-github-pages --force
|
||||
|
||||
popd # return to main repo sandbox root
|
||||
|
||||
# exit cleanly
|
||||
exit 0
|
||||
Reference in New Issue
Block a user