Use gh pages #9
Workflow file for this run
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
name: Build documentation | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- '**' | |
pull_request: | |
branches: | |
- master | |
jobs: | |
docs: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: Install jupedsim | |
run: | | |
python3 -m pip install . | |
- name: Build docs | |
run: | | |
python3 -m pip install -r docs/requirements.txt | |
sphinx-build docs/source docs/build -j$(nproc) | |
- name: Determine directory to publish docs to | |
id: docs-publish-dir | |
uses: jannekem/run-python-script-action@v1 | |
with: | |
script: | | |
import os, re | |
github_ref = os.environ.get('GITHUB_REF') | |
m = re.match(r'^refs/tags/v([0-9]+\.[0-9]+\.[0-9]+(-dev\.[0-9]+)?)$', | |
github_ref) | |
if m: | |
target = "${{ github.ref_name }}" | |
elif github_ref == 'refs/heads/master': | |
target = 'latest' | |
else: | |
target = '' | |
print(target) | |
set_output('target', target) | |
- name: Publish docs to GitHub pages | |
if: steps.docs-publish-dir.outputs.target != '' | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: docs/build | |
destination_dir: ${{ steps.docs-publish-dir.outputs.target }} | |
keep_files: false | |
- name: Upload documentation as artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pages | |
path: | | |
docs/build/ | |
outputs: | |
docs-target: ${{ steps.docs-publish-dir.outputs.target }} | |
docs-versions: | |
name: Update docs versions JSON | |
needs: docs | |
if: needs.docs.outputs.docs-target != '' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: gh-pages | |
- name: Write versions to JSON file | |
uses: jannekem/run-python-script-action@v1 | |
with: | |
script: | | |
import json | |
from pathlib import Path | |
prefix = "https://www.jupedsim.org/" | |
cwd = Path.cwd() | |
versions = sorted((item.name for item in cwd.iterdir() | |
if item.is_dir() and not item.name.startswith('.')), | |
reverse=True) | |
versions_url = [dict(name=version, version=version, url= prefix + version) | |
for version in versions] | |
target_file = Path('versions.json') | |
with target_file.open('w') as f: | |
json.dump(versions_url, f) | |
- name: Redirect stable to new release | |
if: needs.docs.outputs.docs-target != 'latest' | |
run: | | |
rm -rf stable | |
ln -s ${{needs.docs.outputs.docs-target}} stable | |
- name: Update files in gh-pages branch | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
branch: gh-pages | |
commit_message: Update versions and stable |