From c16541e93695f8750fafb70693d1229480e1af85 Mon Sep 17 00:00:00 2001 From: Maxim Reznik Date: Sat, 14 Sep 2024 23:30:51 +0300 Subject: [PATCH] Publish on gh-pages --- .github/workflows/publish-latest.yml | 112 ++++++++++++++++++ .github/workflows/publish-learn-latest.yml | 2 +- .github/workflows/sphinx-books-tests.js.yml | 2 +- .github/workflows/sphinx-content-tests.js.yml | 2 +- content/hidden_ukr.txt | 3 + frontend/sphinx/conf.py | 2 + frontend/sphinx/conf_patch_ukr.py | 5 + 7 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/publish-latest.yml create mode 100644 content/hidden_ukr.txt create mode 100644 frontend/sphinx/conf_patch_ukr.py diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml new file mode 100644 index 000000000..7d8ae3ae6 --- /dev/null +++ b/.github/workflows/publish-latest.yml @@ -0,0 +1,112 @@ +name: Build Sphinx Books + +on: [workflow_dispatch] + +defaults: + run: + working-directory: frontend + +jobs: + build: + + runs-on: ubuntu-22.04 + + strategy: + matrix: + python-version: ['3.11'] + node-version: [20.x] + env: + hidden_books: ${{ github.job.steps.working-directory }}/../content/hidden_ukr.txt + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - uses: actions/checkout@v4 + - name: Enable Corepack + run: corepack enable + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + cache-dependency-path: 'frontend' + - name: Install OS Deps + run: | + sudo apt-get update && \ + sudo apt-get install -y \ + crudini \ + graphviz \ + plantuml \ + texlive-latex-base \ + texlive-latex-recommended \ + texlive-latex-extra \ + texlive-fonts-recommended \ + texlive-fonts-extra \ + latexmk \ + texlive-xetex \ + fonts-lmodern \ + fonts-open-sans \ + fonts-dejavu \ + poppler-utils + - name: Install GNAT FSF + run: | + ${GITHUB_WORKSPACE}/.github/workflows/install_toolchain.sh --gnat --gnatprove --gprbuild + - name: Increase max user watches + run: | + echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && \ + sudo sysctl -p + - name: Install dependencies + run: yarn --immutable + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run Webpack & Sphinx production + run: make cleanall webpack-production sphinx-production +# - name: Run SPHINX content tests +# run: make -k HIDDEN_BOOKS=$HIDDEN_BOOKS HIDDEN_CONTENTS="" test_all_content +# - name: Build PDF books including build/runtime output +# run: make HIDDEN_BOOKS=$HIDDEN_BOOKS HIDDEN_CONTENTS="" pdf_books + - name: Archive PDF books in artifact + uses: actions/upload-artifact@v4 + with: + name: learn-pdf-books + path: | + frontend/dist/pdf_books +# if-no-files-found: error + retention-days: 1 + compression-level: 9 +# - name: Build EPUB books including build/runtime output +# run: make HIDDEN_BOOKS=$HIDDEN_BOOKS HIDDEN_CONTENTS="" epub_books + - name: Archive EPUB books in artifact + uses: actions/upload-artifact@v4 + with: + name: learn-epub-books + path: | + frontend/dist/epub_books +# if-no-files-found: error + retention-days: 1 + compression-level: 9 + + - name: Upload to page artifact + uses: actions/upload-pages-artifact@v3.0.1 + with: + path: dist/html/ + + deploy: + permissions: + contents: read + pages: write + id-token: write + runs-on: ubuntu-latest + needs: build + environment: + name: github-pages + url: ${{steps.deployment.outputs.page_url}} + steps: + - name: Deploy artifact + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/publish-learn-latest.yml b/.github/workflows/publish-learn-latest.yml index 7e3dd2832..26fcf5aa9 100644 --- a/.github/workflows/publish-learn-latest.yml +++ b/.github/workflows/publish-learn-latest.yml @@ -1,6 +1,6 @@ name: Publish learn-latest -on: [push] +on: [workflow_dispatch] jobs: trigger: diff --git a/.github/workflows/sphinx-books-tests.js.yml b/.github/workflows/sphinx-books-tests.js.yml index 295805c22..f3bf83614 100644 --- a/.github/workflows/sphinx-books-tests.js.yml +++ b/.github/workflows/sphinx-books-tests.js.yml @@ -1,6 +1,6 @@ name: Sphinx Books Tests -on: [push, pull_request] +on: [workflow_dispatch] defaults: run: diff --git a/.github/workflows/sphinx-content-tests.js.yml b/.github/workflows/sphinx-content-tests.js.yml index 2b9bff7f8..fece50e7f 100644 --- a/.github/workflows/sphinx-content-tests.js.yml +++ b/.github/workflows/sphinx-content-tests.js.yml @@ -1,6 +1,6 @@ name: Sphinx Content Tests -on: [push, pull_request] +on: [workflow_dispatch] defaults: run: diff --git a/content/hidden_ukr.txt b/content/hidden_ukr.txt new file mode 100644 index 000000000..9fdb8e3ab --- /dev/null +++ b/content/hidden_ukr.txt @@ -0,0 +1,3 @@ +courses +labs +training_examples diff --git a/frontend/sphinx/conf.py b/frontend/sphinx/conf.py index d2f32df1c..56ca4a5f8 100644 --- a/frontend/sphinx/conf.py +++ b/frontend/sphinx/conf.py @@ -484,6 +484,8 @@ def get_file_from_conf_ini(path_to_file): redirects = { } +exec(open('conf_patch_ukr.py').read()) # Inject Ukr settings + def setup(app): diff --git a/frontend/sphinx/conf_patch_ukr.py b/frontend/sphinx/conf_patch_ukr.py new file mode 100644 index 000000000..63b0c857d --- /dev/null +++ b/frontend/sphinx/conf_patch_ukr.py @@ -0,0 +1,5 @@ +# Injection into conf.py for Ukrainian + +# exclude_patterns += ['courses', "labs", "training_examples"] + +language = 'uk'