-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This PR adds the ability to deploy several documentations of Alt-Ergo. Basically, we push the documentation of the dev version in `/dev` on gh-pages if we push on `next`.
- Loading branch information
Showing
10 changed files
with
51 additions
and
375 deletions.
There are no files selected for viewing
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,153 +1,61 @@ | ||
name: Documentation | ||
|
||
# This workflow is divided in 3 jobs, ocaml_docs, sphinx_docs, deploy_docs. | ||
# - The ocaml_docs build the ocaml documentation, it runs for every push, | ||
# if it fails no more work is done | ||
# - The sphinx_docs job build the sphinx documentation, it runs only if a PR | ||
# is open. if it fails no more work is done | ||
# - deploy_docs only run on the next branch when code is pushed. It retrieve | ||
# the ocaml and sphinx documentation and deploy them on the gh-pages branch | ||
name: Build documentation | ||
|
||
on: [push, pull_request] | ||
|
||
env: | ||
OCAML_DEFAULT_VERSION: 4.10.0 | ||
OCAML_DEFAULT_VERSION: 4.14.2 | ||
# Add OPAMYES=true to the environment, this is usefill to replace `-y` option | ||
# in any opam call | ||
OPAMYES: true | ||
|
||
jobs: | ||
# For any push and PR, build the documentation from the ocaml comments | ||
# If this build fails, the documentation workflow stops | ||
# If it succeeds, an artifact is made with the generated documentation | ||
# (html format only). This artifact is used in the deploying job | ||
ocaml_docs: | ||
name: OCaml documentation | ||
|
||
build: | ||
runs-on: ubuntu-latest | ||
|
||
env: | ||
OPAMWITHDOC: true | ||
|
||
steps: | ||
# Checkout the code of the current branch | ||
- name: Checkout code | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
# Update apt-get database | ||
- name: Update apt-get database | ||
run: sudo apt-get update | ||
|
||
# Get an OCaml environment with opam installed and the proper ocaml version | ||
# opam will used opam cache environment if retrieved | ||
- name: Use OCaml ${{ env.OCAML_DEFAULT_VERSION }} | ||
uses: ocaml/setup-ocaml@v3 | ||
with: | ||
ocaml-compiler: ${{ env.OCAML_DEFAULT_VERSION }} | ||
dune-cache: true | ||
|
||
# Install dependencies if the cache is not retrieved | ||
# odoc is installed as deps with { with-doc } in opam files | ||
- name: opam install deps | ||
run: opam exec -- make deps | ||
# if: steps.cache-opam.outputs.cache-hit != 'true' | ||
|
||
# Try to upgrade installed packages and fix dependencies if needed, | ||
# when the cache is retrieved | ||
# - run: opam upgrade --fixup | ||
# if: steps.cache-opam.outputs.cache-hit == 'true' | ||
|
||
# Make the documentation | ||
- name: Make OCaml documentation | ||
run: opam exec -- make odoc | ||
|
||
# Create and upload an artifact `ocaml_doc` that contains the ocaml | ||
# documentation in html format. | ||
# This is only done if this workflow is triggered in a PR or on the | ||
# following branches : next, main | ||
- name: Upload ocaml documentation | ||
uses: actions/upload-artifact@v4 | ||
if: github.event_name == 'pull_request' || github.ref == 'refs/heads/next' || github.ref == 'refs/heads/main' | ||
- name: Setup python | ||
uses: actions/setup-python@v5 | ||
with: | ||
name: ocaml_doc | ||
path: _build/default/_doc/_html/ | ||
|
||
|
||
# On PR, or push on next/main, build the sphinx general documentation | ||
# If this build fails, the documentation workflow stops | ||
# If it succeeds, an artifact is made with the generated documentation | ||
# This artifact is used in the deploying job | ||
sphinx_docs: | ||
name: Sphinx documentation | ||
python-version: '3.10' | ||
|
||
# We only run this if the ocaml documentation build is successful | ||
needs: ocaml_docs | ||
- name: Install dependencies | ||
run: opam exec -- make doc-deps | ||
|
||
# Sphinx documentation is only builded if a PR is open or when it's | ||
# pushed on next or main | ||
if: github.event_name == 'pull_request' || github.ref == 'refs/heads/next' || github.ref == 'refs/heads/main' | ||
runs-on: ubuntu-latest | ||
- name: Build documentation | ||
run: opam exec -- make doc | ||
|
||
steps: | ||
# Checkout the code of the current branch | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
# Build the sphinx documentation | ||
# and automatically print any error or warning | ||
- name: Build sphinx documentation | ||
uses: ammaraskar/sphinx-action@master | ||
with: | ||
docs-folder: "docs/sphinx_docs/" | ||
build-command: "sphinx-build -b html . _build" | ||
|
||
# Create and upload an artifact `sphinx_doc` that contains the sphinx | ||
# documentation in html format. | ||
- name: Upload sphinx documentation | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: sphinx_doc | ||
path: docs/sphinx_docs/_build | ||
|
||
|
||
# For every push on main, retrieve ocaml and sphinx documentation | ||
# and publish them on gh-pages branch | ||
deploy_docs: | ||
name: Deploy documentation | ||
|
||
if: github.ref == 'refs/heads/main' | ||
|
||
needs: | ||
- ocaml_docs | ||
- sphinx_docs | ||
name: artifact-doc | ||
path: _build/doc | ||
|
||
deploy: | ||
needs: build | ||
runs-on: ubuntu-latest | ||
steps: | ||
# Retrieve ocaml documentation artifact | ||
- name: Download ocaml documentation | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: ocaml_doc | ||
path: _build/odoc/dev | ||
if: github.ref == 'refs/heads/next' | ||
|
||
# Retrieve sphinx documentation artifact | ||
- name: Download sphinx documentation | ||
steps: | ||
- name: Download artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: sphinx_doc | ||
path: _build | ||
|
||
- name: Add files to bypass nojekyll | ||
run: | | ||
touch _build/.nojekyll | ||
touch _build/odoc/.nojekyll | ||
touch _build/odoc/dev/.nojekyll | ||
name: artifact-doc | ||
path: build_doc | ||
|
||
# Deploy files contain in _build directory on gh-pages branch | ||
- name: deploy-doc | ||
uses: JamesIves/[email protected] | ||
- name: Deploy | ||
uses: JamesIves/[email protected] | ||
with: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
BRANCH: gh-pages | ||
FOLDER: _build | ||
CLEAN: false | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
folder: build_doc | ||
target-folder: dev |
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
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 |
---|---|---|
|
@@ -46,3 +46,6 @@ __pycache__ | |
|
||
# Generated nix files | ||
/result* | ||
|
||
# Virtual environment to build sphinx docs | ||
sphinx-venv |
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
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
Oops, something went wrong.