From d2eb04a5c365e9e5b3fef3122363c0e8335d3083 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:08:27 +0200 Subject: [PATCH 01/21] Add CI workflow to build Docker ctr img with offline copy of the docs --- .github/dependabot.yml | 42 ++++++++ .github/workflows/build-docker.yml | 130 +++++++++++++++++++++++++ .github/workflows/deploydocusaurus.yml | 11 ++- Caddyfile | 8 ++ Dockerfile | 4 + 5 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build-docker.yml create mode 100644 Caddyfile create mode 100644 Dockerfile diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..0e70e5745 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,42 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + commit-message: + prefix: build(ci) + groups: + ci: + patterns: + - '*' + + # Maintain dependencies for npm + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "monthly" + commit-message: + prefix: build(pip) + groups: + pip: + patterns: + - '*' + + # Maintain dependencies for docker + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: "monthly" + commit-message: + prefix: build(docker) + groups: + docker: + patterns: + - '*' diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 000000000..9cebed269 --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,130 @@ +name: build-docker + +on: + push: + branches: + - 'master' + - 'main' + tags: + - 'v*' + pull_request: + merge_group: + workflow_dispatch: + inputs: + git-ref: + description: 'Git ref (optional)' + required: false + +env: + IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} + IMAGE_NAME: 'project-docs' + MAIN_BRANCH: 'master' # pushing to the main branch will update the "edge" tag on the image + BETA_BRANCH: 'beta' # pushing to this branch will update the "beta" tag on the image + STABLE_BRANCH: 'stable' # pushing to this branch will update the "stable" tag on the image + TAG_PREFIX: 'v' # pushing tags with this prefix will add a version tag to the image and update the "latest" tag on the image + PUSH_IMAGE: ${{ (github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork) || github.event_name == 'push' || github.event_name == 'push tag' }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + strategy: + fail-fast: false + matrix: + variant: + - default + steps: + - uses: actions/checkout@v4 + with: + # Only fetch files we actually need: + fetch-depth: 0 + filter: 'blob:none' + + # Build documentation website + - name: Install poetry + run: pipx install poetry==2.1.3 + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: "19" # FIXME: this is very old and out-of-date. Bump the version! + + - name: Install build dependencies + run: | + npm install + + - name: Make documentation ${{ matrix.variant }} + if: matrix.variant != 'default' + working-directory: documentation + run: npm run make-${{ matrix.variant }} + + - name: Build documentation + run: npm run build + + # Work around a bug where capital letters in the GitHub username (e.g. "PlanktoScope") make it + # impossible to push to GHCR. See https://github.com/macbre/push-to-ghcr/issues/12 + - name: Lowercase image registry and owner + id: image_registry_case + uses: ASzc/change-string-case-action@v6 + with: + string: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Set documentation variant suffix + run: | + if [[ '${{ matrix.variant }}' != 'default' ]]; then + echo 'VARIANT_SUFFIX=-${{ matrix.variant}}' >> $GITHUB_ENV + fi + + # Build and publish Docker container image + - name: Get Docker metadata + id: meta + uses: docker/metadata-action@v5 + env: + DOCKER_METADATA_PR_HEAD_SHA: true + IS_MAIN_BRANCH: ${{ github.ref == format('refs/heads/{0}', env.MAIN_BRANCH) }} + IS_BETA_BRANCH: ${{ github.ref == format('refs/heads/{0}', env.BETA_BRANCH) }} + IS_STABLE_BRANCH: ${{ github.ref == format('refs/heads/{0}', env.STABLE_BRANCH) }} + with: + images: ${{ steps.image_registry_case.outputs.lowercase }} + flavor: | + suffix=${{ env.VARIANT_SUFFIX }} + tags: | + type=match,pattern=${{ env.TAG_PREFIX }}(.*),group=1 # this implicitly updates latest + type=raw,value=stable,enable=${{ env.IS_STABLE_BRANCH }},priority=702 + type=raw,value=beta,enable=${{ env.IS_BETA_BRANCH }},priority=701 + type=edge,branch=${{ env.MAIN_BRANCH }} + type=ref,event=pr + type=sha,priority=100 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GitHub Container Registry + if: env.PUSH_IMAGE == 'true' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ./documentation + pull: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: ${{ env.PUSH_IMAGE }} + + # Upload documentation website as archive + - name: Upload website archive + uses: actions/upload-artifact@v4 + with: + name: documentation-website${{ env.VARIANT_SUFFIX }} + path: documentation/site diff --git a/.github/workflows/deploydocusaurus.yml b/.github/workflows/deploydocusaurus.yml index a268b79d8..319c4e621 100644 --- a/.github/workflows/deploydocusaurus.yml +++ b/.github/workflows/deploydocusaurus.yml @@ -18,17 +18,24 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Check out repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 + with: + # Only fetch files we actually need: + fetch-depth: 0 + filter: 'blob:none' + # Node is required for npm - name: Set up Node uses: actions/setup-node@v2 with: - node-version: "19" + node-version: "19" # FIXME: this is very old and out-of-date. Bump the version! + # Install and build Docusaurus website - name: Build Docusaurus website run: | npm install npm run build + - name: Deploy ๐Ÿš€ uses: JamesIves/github-pages-deploy-action@releases/v3 with: diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 000000000..4e254b802 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,8 @@ +{ + auto_https off +} + +:80 { + root * /srv + file_server +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..c90c41bf5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM caddy:2.10.2 + +COPY Caddyfile /etc/caddy/Caddyfile +COPY site /srv From bf2b5e0557d287faf92f1ed0a189ab64bf981fd6 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:14:57 +0200 Subject: [PATCH 02/21] Don't try to run the deploy CI workflow from PRs --- .../workflows/{deploydocusaurus.yml => deploy-edge.yml} | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) rename .github/workflows/{deploydocusaurus.yml => deploy-edge.yml} (94%) diff --git a/.github/workflows/deploydocusaurus.yml b/.github/workflows/deploy-edge.yml similarity index 94% rename from .github/workflows/deploydocusaurus.yml rename to .github/workflows/deploy-edge.yml index 319c4e621..d2cff99b9 100644 --- a/.github/workflows/deploydocusaurus.yml +++ b/.github/workflows/deploy-edge.yml @@ -1,13 +1,12 @@ - -name: deploy-docusaurus +name: deploy on: push: - pull_request: + branches: + - 'master' + - 'main' workflow_dispatch: - - # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: deploy: From 453c8172e333f2f28fa1c45eb01a4f7f60270079 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:18:37 +0200 Subject: [PATCH 03/21] Fix incorrect CI step context --- .github/workflows/build-docker.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 9cebed269..17f7e4cce 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -115,7 +115,6 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - context: ./documentation pull: true platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} From 3de2df345d061a36dbd7e492b684fe54d0bfbba2 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:31:41 +0200 Subject: [PATCH 04/21] Fix incorrect file path for Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c90c41bf5..520cbbafb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ FROM caddy:2.10.2 COPY Caddyfile /etc/caddy/Caddyfile -COPY site /srv +COPY build /srv From be869468cb4d7e23cbb0ff1e16f429bc8979cf24 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:34:53 +0200 Subject: [PATCH 05/21] Try to copy photos in a separate ctr img layer --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 520cbbafb..c93a9dc4e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ FROM caddy:2.10.2 COPY Caddyfile /etc/caddy/Caddyfile -COPY build /srv +COPY build/assets/images /srv/assets/images +COPY --exclude=build/assets/images build /srv From 745a359745aa989661261c2faf5bc92e776e13cc Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:38:53 +0200 Subject: [PATCH 06/21] Try to resolve complaint about `--exclude` flag in `Dockerfile` --- Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c93a9dc4e..ceef98652 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,10 @@ +# syntax=docker/dockerfile:1.19 +# Note: the above syntax parser directive is only needed so that we can use the COPY directive with +# the `--exclude` option. + FROM caddy:2.10.2 -COPY Caddyfile /etc/caddy/Caddyfile COPY build/assets/images /srv/assets/images COPY --exclude=build/assets/images build /srv + +COPY Caddyfile /etc/caddy/Caddyfile From d045875e482640760293af20f5fb3588cdbed3b8 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:49:22 +0200 Subject: [PATCH 07/21] Troubleshoot previous commit --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index ceef98652..47fe5e993 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,9 @@ FROM caddy:2.10.2 +RUN ls . +RUN ls build +RUN ls build/assets COPY build/assets/images /srv/assets/images COPY --exclude=build/assets/images build /srv From 4ba8b49432bd21a6f79ebb4939209d4709545f00 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 18:57:38 +0200 Subject: [PATCH 08/21] Continue troubleshooting... --- .github/workflows/build-docker.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 17f7e4cce..52521ac8d 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -61,7 +61,16 @@ jobs: run: npm run make-${{ matrix.variant }} - name: Build documentation - run: npm run build + run: | + npm run build + echo "build:" + ls build + echo + echo "assets:" + ls build/assets + echo + echo "images:" + ls build/assets/images # Work around a bug where capital letters in the GitHub username (e.g. "PlanktoScope") make it # impossible to push to GHCR. See https://github.com/macbre/push-to-ghcr/issues/12 @@ -115,6 +124,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: + context: . pull: true platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} From ae3825f428c75a3a363b187a4655401f8f44e946 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 19:03:14 +0200 Subject: [PATCH 09/21] Continue troubleshooting... --- Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 47fe5e993..ceef98652 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,9 +4,6 @@ FROM caddy:2.10.2 -RUN ls . -RUN ls build -RUN ls build/assets COPY build/assets/images /srv/assets/images COPY --exclude=build/assets/images build /srv From f7c964be80f6daa08e95bc0a4c9cb099ae239a04 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Thu, 2 Oct 2025 20:32:08 +0200 Subject: [PATCH 10/21] Fix ctr img push conditions, and built site artifact upload --- .github/workflows/build-docker.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 52521ac8d..22a5ddb78 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -22,7 +22,13 @@ env: BETA_BRANCH: 'beta' # pushing to this branch will update the "beta" tag on the image STABLE_BRANCH: 'stable' # pushing to this branch will update the "stable" tag on the image TAG_PREFIX: 'v' # pushing tags with this prefix will add a version tag to the image and update the "latest" tag on the image - PUSH_IMAGE: ${{ (github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork) || github.event_name == 'push' || github.event_name == 'push tag' }} + # Because openUC2/openuc2.github.io is a fork of an upstream repo, we can't suppress attempts to push + # container images for forks of the openUC2/openuc2.github.io repo. That's is probably acceptable for how + # we develop this project (i.e. with PRs from branches on the openUC2/openuc2.github.io repo, rather than + # PRs from user-created forks of openUC2/openuc2.github.io). + PUSH_IMAGE: ${{ github.event_name == 'pull_request' || github.event_name == 'push' || github.event_name == 'push tag' }} + # TODO(ethanjli): Restore the following line once this repo is detached from its fork upstream + # PUSH_IMAGE: ${{ (github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork) || github.event_name == 'push' || github.event_name == 'push tag' }} jobs: build: @@ -136,4 +142,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: documentation-website${{ env.VARIANT_SUFFIX }} - path: documentation/site + path: build From a05c699b1ca54ed4eedb9c5d7bf02be401204b45 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 13:38:22 +0200 Subject: [PATCH 11/21] Allow overriding the base URL via env var --- docusaurus.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 028a5e01a..3edd7e912 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -10,8 +10,8 @@ const katex = require('rehype-katex'); const config = { title: 'openUC2 Documentation', tagline: 'Seeing is believing. But better with the docs!', - url: 'https://docs.youseetoo.org', - baseUrl: '/', + url: 'https://openuc2.github.io', + baseUrl: process.env.BASE_URL || '/', onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', From 588fd57add288bfb65860d724d68df12c24bbbc2 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 13:43:44 +0200 Subject: [PATCH 12/21] Override the base URL when building the site for the ctr img --- .github/workflows/build-docker.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 22a5ddb78..bde48cbdc 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -67,16 +67,11 @@ jobs: run: npm run make-${{ matrix.variant }} - name: Build documentation + env: + # Container image should be built with `/docs` as the base URL instead of `/`: + BASE_URL: '/docs/' run: | npm run build - echo "build:" - ls build - echo - echo "assets:" - ls build/assets - echo - echo "images:" - ls build/assets/images # Work around a bug where capital letters in the GitHub username (e.g. "PlanktoScope") make it # impossible to push to GHCR. See https://github.com/macbre/push-to-ghcr/issues/12 From e3b6de298f772de500330a79fd010bd88d8c3e6b Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 14:16:38 +0200 Subject: [PATCH 13/21] Don't set base URL, because it breaks many hard-coded links --- .github/workflows/build-docker.yml | 3 --- docusaurus.config.js | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index bde48cbdc..7ea55e86f 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -67,9 +67,6 @@ jobs: run: npm run make-${{ matrix.variant }} - name: Build documentation - env: - # Container image should be built with `/docs` as the base URL instead of `/`: - BASE_URL: '/docs/' run: | npm run build diff --git a/docusaurus.config.js b/docusaurus.config.js index 3edd7e912..6cf39cae8 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -10,7 +10,7 @@ const katex = require('rehype-katex'); const config = { title: 'openUC2 Documentation', tagline: 'Seeing is believing. But better with the docs!', - url: 'https://openuc2.github.io', + url: 'https://openuc2.github.io/', baseUrl: process.env.BASE_URL || '/', onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', From ddea193cf0e041042cd62772d76bc7ad0a78c66a Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 14:38:52 +0200 Subject: [PATCH 14/21] Revert change in previous commit --- .github/workflows/build-docker.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 7ea55e86f..bde48cbdc 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -67,6 +67,9 @@ jobs: run: npm run make-${{ matrix.variant }} - name: Build documentation + env: + # Container image should be built with `/docs` as the base URL instead of `/`: + BASE_URL: '/docs/' run: | npm run build From 75e04dd9df9645c91eeaf036f1b19f4d5ed9e8ca Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 15:10:43 +0200 Subject: [PATCH 15/21] Fix some broken links in the homepage and footer --- docusaurus.config.js | 8 +++++--- src/components/HomepageFeatures/index.tsx | 10 +++++----- src/pages/index.tsx | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 6cf39cae8..e95a3a8da 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -6,12 +6,14 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); const math = require('remark-math'); const katex = require('rehype-katex'); +const baseURL = process.env.BASE_URL || '/' + /** @type {import('@docusaurus/types').Config} */ const config = { title: 'openUC2 Documentation', tagline: 'Seeing is believing. But better with the docs!', url: 'https://openuc2.github.io/', - baseUrl: process.env.BASE_URL || '/', + baseUrl: baseURL, onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', @@ -134,7 +136,7 @@ const config = { items: [ { label: 'Tutorial', - to: '/docs/intro', + to: `${baseURL}docs/intro`, }, ], }, @@ -156,7 +158,7 @@ const config = { items: [ { label: 'Blog', - to: '/blog', + to: 'https://openuc2.com/blog', }, { label: 'GitHub', diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx index 88c6d7831..ff6aa4e6b 100644 --- a/src/components/HomepageFeatures/index.tsx +++ b/src/components/HomepageFeatures/index.tsx @@ -13,7 +13,7 @@ type FeatureItem = { const FEATURES: FeatureItem[] = [ { title: 'Optics Basics', - to: '/docs/Toolboxes', + to: 'docs/Toolboxes', image: require('@site/static/img/Application_Discovery_Kit_Base.png').default, description: 'Explorer & Discovery boxes to master fundamentals.', }, @@ -31,26 +31,26 @@ const FEATURES: FeatureItem[] = [ }, { title: 'Fluorescence & Lightsheet', - to: '/docs/Toolboxes/LightsheetBox/Light_sheet_Fluoresence_microscope', + to: 'docs/Toolboxes/LightsheetBox/Light_sheet_Fluoresence_microscope', image: require('@site/static/img/ZebraFish-1-1536x864.gif').default, description: 'LED, laser & light-sheet fluorescence tutorials.', }, { title: 'Interferometry & Polarization', - to: '/docs/Toolboxes/QuantumBox/MichelsonInterferometer/MichelsonInterferometer', + to: 'docs/Toolboxes/QuantumBox/MichelsonInterferometer/MichelsonInterferometer', image: require('@site/static/img/429833192-806c55e3-47cf-45a0-b216-883e5747821a.jpg').default, description: 'Michelson, Mach-Zehnder, Newtonโ€™s rings, stress birefringence.', }, { title: 'ImSwitch and Firmware', - to: '/docs/ImSwitch/Quickstart', + to: 'docs/ImSwitch/Quickstart', image: require('@site/static/img/FRAME6.png').default, description: 'Everything that drives your microscopy hardware.', }, { title: 'Seeed Studio x openUC2', - to: '/docs/Toolboxes/SeeedMicroscope/04_1_seeedmicroscope', + to: 'docs/Toolboxes/SeeedMicroscope/04_1_seeedmicroscope', image: require('@site/static/img/Application_SEEEDxOpenUC2_v2.png').default, description: 'The standalone microscope for the IoT.', }, diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 24bf9cb1c..8bc0c6443 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -17,7 +17,7 @@ function HomepageHeader() {
+ to="docs/intro"> ๐Ÿ”ฌ๐ŸŽฒ Visit the openUC2 Tutorials ๐Ÿ”ฌ๐ŸŽฒ
From a4933d86a771db8d9571611b9627523539441e05 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 15:19:57 +0200 Subject: [PATCH 16/21] Change base URL path for Docker container --- .github/workflows/build-docker.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index bde48cbdc..a73a2bea8 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -68,8 +68,10 @@ jobs: - name: Build documentation env: - # Container image should be built with `/docs` as the base URL instead of `/`: - BASE_URL: '/docs/' + # Container image should be built with `/openUC2` as the base URL instead of `/`, as the + # self-contained root of the site. We use `/openUC2/` instead of `/docs/` as the root so + # that we don't have pages in `/docs/docs/`, but instead we have them in `/openUC2/docs/`. + BASE_URL: '/openUC2/' run: | npm run build From cbad860fad9f80ea36b64b19997dcfc447979a55 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 18:13:01 +0200 Subject: [PATCH 17/21] Try setting the appropriate base URL in `Caddyfile`, too --- Caddyfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Caddyfile b/Caddyfile index 4e254b802..c6a17d4bb 100644 --- a/Caddyfile +++ b/Caddyfile @@ -3,6 +3,6 @@ } :80 { - root * /srv + root /openUC2/* /srv file_server } From 4f6b0418045bb338783e7651626f8257daef9079 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 18:19:09 +0200 Subject: [PATCH 18/21] Stop uploading built site as archive, since it's not usable as such --- .github/workflows/build-docker.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index a73a2bea8..7de9e7b3e 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -133,10 +133,3 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} push: ${{ env.PUSH_IMAGE }} - - # Upload documentation website as archive - - name: Upload website archive - uses: actions/upload-artifact@v4 - with: - name: documentation-website${{ env.VARIANT_SUFFIX }} - path: build From cca5a39b88e8b9a763f4c356ba0a287eb46974a4 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 18:23:31 +0200 Subject: [PATCH 19/21] Try to cache Docusaurus builds --- .github/workflows/build-docker.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 7de9e7b3e..e543aa464 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -57,10 +57,20 @@ jobs: with: node-version: "19" # FIXME: this is very old and out-of-date. Bump the version! + - name: Cache ~/.npm + uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ matrix.variant }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: ${{ runner.os }}-node + - name: Install build dependencies run: | npm install + - name: Cache Docusaurus build + uses: docuactions/cache@v1 + - name: Make documentation ${{ matrix.variant }} if: matrix.variant != 'default' working-directory: documentation From 1badbe822ff438b06c2025bb850255d39938e841 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 18:29:32 +0200 Subject: [PATCH 20/21] Fix syntax error in previous commit --- .github/workflows/build-docker.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index e543aa464..8581ea8d6 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -60,9 +60,9 @@ jobs: - name: Cache ~/.npm uses: actions/cache@v4 with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ matrix.variant }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node + path: ~/.npm + key: ${{ runner.os }}-node-${{ matrix.variant }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: ${{ runner.os }}-node - name: Install build dependencies run: | From 512e65b5c105d2e85e8dabd788d89f1eb79dea43 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Mon, 6 Oct 2025 18:45:51 +0200 Subject: [PATCH 21/21] Try again to change base URL path in the Caddyfile --- Caddyfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Caddyfile b/Caddyfile index c6a17d4bb..cc8557390 100644 --- a/Caddyfile +++ b/Caddyfile @@ -3,6 +3,8 @@ } :80 { - root /openUC2/* /srv - file_server + handle_path /openUC2/* { + root * /srv + file_server + } }