From f8d45b9290750fc0e607c0470e4cb0e0f3e08b58 Mon Sep 17 00:00:00 2001 From: "marco.spasiano" Date: Fri, 22 Sep 2023 11:32:51 +0200 Subject: [PATCH] Add Github Action --- .github/workflows/docs.yml | 116 +++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..50420b2 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,116 @@ +name: sphinx +on: + push: + branches: + - master +env: + DEFAULT_BRANCH: "master" + #SPHINXOPTS: "-W --keep-going -T" + # ^-- If these SPHINXOPTS are enabled, then be strict about the builds and fail on any warnings + +jobs: + build-and-deploy: + name: Build and gh-pages + runs-on: ubuntu-latest + container: consiglionazionalericerche/sphinx-latex:latest + steps: + # https://github.com/marketplace/actions/checkout + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + # https://docs.github.com/en/actions/guides/building-and-testing-python#installing-dependencies + # ^-- This gives info on installing dependencies with pip + - name: Install dependencies + run: | + pip install -r requirements.txt + - name: 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 + - name: Build Sphinx docs + run: | + make html + make latexpdf + cp _build/latex/*.pdf _build/html/ + make epub + cp _build/epub/*.epub _build/html/ + # The following supports building all branches and combining on + # gh-pages + + # Clone and set up the old gh-pages branch + - name: Clone old gh-pages + if: ${{ github.event_name == 'push' }} + 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/ + # If a push and default branch, copy build to _gh-pages/ as the "main" + # deployment. + - name: Copy new build (default branch) + if: | + contains(github.event_name, 'push') && + contains(github.ref, env.DEFAULT_BRANCH) + run: | + set -x + # Delete everything under _gh-pages/ that is from the + # primary branch deployment. Eicludes 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 _build/html/ _gh-pages/ + # If a push and not on default branch, then copy the build to + # _gh-pages/branch/$brname (transforming '/' into '--') + - name: Copy new build (branch) + if: | + contains(github.event_name, 'push') && + !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 _build/dirhtml/ _gh-pages/branch/${brdir} + # Go through each branch in _gh-pages/branch/, if it's not a + # ref, then delete it. + - name: Delete old feature branches + if: ${{ github.event_name == 'push' }} + 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 + # Add the .nojekyll file + - name: nojekyll + if: ${{ github.event_name == 'push' }} + run: | + touch _gh-pages/.nojekyll + # Deploy + # https://github.com/peaceiris/actions-gh-pages + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + if: ${{ github.event_name == 'push' }} + #if: ${{ success() && github.event_name == 'push' && github.ref == 'refs/heads/$defaultBranch' }} + with: + publish_branch: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: _gh-pages/ + force_orphan: true