-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GitHub workflow _build_and_publish_documentation.yml : Added a step t…
…hat makes sure to (re-)generate the schema and corresponding documentation. This to ensure that the documentation always represents the latest state of the pydantic models in src/maritime_schema/types
- Loading branch information
1 parent
3ebce75
commit cbd8aab
Showing
1 changed file
with
115 additions
and
110 deletions.
There are no files selected for viewing
225 changes: 115 additions & 110 deletions
225
.github/workflows/_build_and_publish_documentation.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,115 @@ | ||
name: Build and publish documentation | ||
|
||
on: workflow_call | ||
|
||
env: | ||
DEFAULT_BRANCH: 'release' | ||
#SPHINXOPTS: '-W --keep-going -T' | ||
# ^-- If these SPHINXOPTS are enabled, then be strict about the builds and fail on any warnings | ||
|
||
jobs: | ||
build-and-publish-docs: | ||
name: Build and publish documentation | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout active branch | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
lfs: true | ||
- name: Install Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.11' | ||
cache: 'pip' # cache pip dependencies | ||
- name: Install dependencies | ||
run: | | ||
pip install -r requirements-dev.txt | ||
- name: Print debugging information | ||
run: | | ||
echo "github.ref:" ${{github.ref}} | ||
echo "github.event_name:" ${{github.event_name}} | ||
echo "github.head_ref:" ${{github.head_ref}} | ||
echo "github.base_ref:" ${{github.base_ref}} | ||
set -x | ||
git rev-parse --abbrev-ref HEAD | ||
git branch | ||
git branch -a | ||
git remote -v | ||
python -V | ||
pip list --not-required | ||
pip list | ||
# Build documentation | ||
- uses: sphinx-doc/github-problem-matcher@master | ||
- name: Build documentation | ||
run: | | ||
cd docs | ||
make html | ||
- name: Clone and cleanup gh-pages branch | ||
run: | | ||
set -x | ||
git fetch | ||
( git branch gh-pages remotes/origin/gh-pages && git clone . --branch=gh-pages _gh-pages/ ) || mkdir _gh-pages | ||
rm -rf _gh-pages/.git/ | ||
mkdir -p _gh-pages/branch/ | ||
# Delete orphaned branch-folders: | ||
# Go through each subfolder in _gh-pages/branch/ | ||
# If it relates to an orphaned branch, delete it. | ||
- name: Delete orphaned branch-folders | ||
run: | | ||
set -x | ||
for brdir in `ls _gh-pages/branch/` ; do | ||
brname=${brdir//--/\/} # replace '--' with '/' | ||
if ! git show-ref remotes/origin/$brname ; then | ||
echo "Removing $brdir" | ||
rm -r _gh-pages/branch/$brdir/ | ||
fi | ||
done | ||
# Copy documentation to _gh-pages/ (if push happened on release branch) | ||
- name: Copy documentation to _gh-pages/ | ||
if: | | ||
contains(github.ref, env.DEFAULT_BRANCH) | ||
run: | | ||
set -x | ||
# Delete everything under _gh-pages/ that is from the | ||
# primary branch deployment. Excludes the other branches | ||
# _gh-pages/branch-* paths, and not including | ||
# _gh-pages itself. | ||
find _gh-pages/ -mindepth 1 ! -path '_gh-pages/branch*' -delete | ||
rsync -a docs/build/html/ _gh-pages/ | ||
# Copy documentation to _gh-pages/branch/$brname (if push happened on any other branch) | ||
# ('/' gets replaced by '--') | ||
- name: Copy documentation to _gh-pages/branch/${{github.ref}} | ||
if: | | ||
!contains(github.ref, env.DEFAULT_BRANCH) | ||
run: | | ||
set -x | ||
#brname=$(git rev-parse --abbrev-ref HEAD) | ||
brname="${{github.ref}}" | ||
brname="${brname##refs/heads/}" | ||
brdir=${brname//\//--} # replace '/' with '--' | ||
rm -rf _gh-pages/branch/${brdir} | ||
rsync -a docs/build/html/ _gh-pages/branch/${brdir} | ||
# Add .nojekyll file | ||
- name: Add .nojekyll file | ||
run: touch _gh-pages/.nojekyll | ||
|
||
# Publish: Commit gh-pages branch and publish it to GitHub Pages | ||
- name: Publish documentation | ||
uses: peaceiris/actions-gh-pages@v3 | ||
with: | ||
publish_branch: gh-pages | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
publish_dir: _gh-pages/ | ||
force_orphan: true | ||
name: Build and publish documentation | ||
|
||
on: workflow_call | ||
|
||
env: | ||
DEFAULT_BRANCH: 'release' | ||
#SPHINXOPTS: '-W --keep-going -T' | ||
# ^-- If these SPHINXOPTS are enabled, then be strict about the builds and fail on any warnings | ||
|
||
jobs: | ||
build-and-publish-docs: | ||
name: Build and publish documentation | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout active branch | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
lfs: true | ||
- name: Install Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.11' | ||
cache: 'pip' # cache pip dependencies | ||
- name: Install dependencies | ||
run: | | ||
pip install -r requirements-dev.txt | ||
- name: Print debugging information | ||
run: | | ||
echo "github.ref:" ${{github.ref}} | ||
echo "github.event_name:" ${{github.event_name}} | ||
echo "github.head_ref:" ${{github.head_ref}} | ||
echo "github.base_ref:" ${{github.base_ref}} | ||
set -x | ||
git rev-parse --abbrev-ref HEAD | ||
git branch | ||
git branch -a | ||
git remote -v | ||
python -V | ||
pip list --not-required | ||
pip list | ||
- name: Generate schema and -documentation | ||
run: | | ||
pip install -e . | ||
publish-schema | ||
# Build documentation | ||
- uses: sphinx-doc/github-problem-matcher@master | ||
- name: Build documentation | ||
run: | | ||
cd docs | ||
make html | ||
- name: Clone and cleanup gh-pages branch | ||
run: | | ||
set -x | ||
git fetch | ||
( git branch gh-pages remotes/origin/gh-pages && git clone . --branch=gh-pages _gh-pages/ ) || mkdir _gh-pages | ||
rm -rf _gh-pages/.git/ | ||
mkdir -p _gh-pages/branch/ | ||
# Delete orphaned branch-folders: | ||
# Go through each subfolder in _gh-pages/branch/ | ||
# If it relates to an orphaned branch, delete it. | ||
- name: Delete orphaned branch-folders | ||
run: | | ||
set -x | ||
for brdir in `ls _gh-pages/branch/` ; do | ||
brname=${brdir//--/\/} # replace '--' with '/' | ||
if ! git show-ref remotes/origin/$brname ; then | ||
echo "Removing $brdir" | ||
rm -r _gh-pages/branch/$brdir/ | ||
fi | ||
done | ||
# Copy documentation to _gh-pages/ (if push happened on release branch) | ||
- name: Copy documentation to _gh-pages/ | ||
if: | | ||
contains(github.ref, env.DEFAULT_BRANCH) | ||
run: | | ||
set -x | ||
# Delete everything under _gh-pages/ that is from the | ||
# primary branch deployment. Excludes the other branches | ||
# _gh-pages/branch-* paths, and not including | ||
# _gh-pages itself. | ||
find _gh-pages/ -mindepth 1 ! -path '_gh-pages/branch*' -delete | ||
rsync -a docs/build/html/ _gh-pages/ | ||
# Copy documentation to _gh-pages/branch/$brname (if push happened on any other branch) | ||
# ('/' gets replaced by '--') | ||
- name: Copy documentation to _gh-pages/branch/${{github.ref}} | ||
if: | | ||
!contains(github.ref, env.DEFAULT_BRANCH) | ||
run: | | ||
set -x | ||
#brname=$(git rev-parse --abbrev-ref HEAD) | ||
brname="${{github.ref}}" | ||
brname="${brname##refs/heads/}" | ||
brdir=${brname//\//--} # replace '/' with '--' | ||
rm -rf _gh-pages/branch/${brdir} | ||
rsync -a docs/build/html/ _gh-pages/branch/${brdir} | ||
# Add .nojekyll file | ||
- name: Add .nojekyll file | ||
run: touch _gh-pages/.nojekyll | ||
|
||
# Publish: Commit gh-pages branch and publish it to GitHub Pages | ||
- name: Publish documentation | ||
uses: peaceiris/actions-gh-pages@v3 | ||
with: | ||
publish_branch: gh-pages | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
publish_dir: _gh-pages/ | ||
force_orphan: true |