diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml index 89819f1..0b61127 100644 --- a/.github/workflows/docs-deploy.yml +++ b/.github/workflows/docs-deploy.yml @@ -23,30 +23,26 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: 'npm' - cache-dependency-path: 'docusaurus/package-lock.json' - - - name: Install dependencies - working-directory: docusaurus - run: npm ci - - - name: Build Docusaurus - working-directory: docusaurus - run: npm run build - - - name: Configure GitHub Pages - uses: actions/configure-pages@v4 - + + - name: Build production image + run: > + docker build + --build-context readmes=readmes + --target prod + -t docusaurus-prod + docusaurus + + - name: Extract build output + run: | + docker create --name docusaurus-build docusaurus-prod + docker cp docusaurus-build:/opt/docusaurus/build ./build + docker rm docusaurus-build + - name: Upload artifact id: upload-artifact uses: actions/upload-pages-artifact@v3 with: - path: 'docusaurus/build' + path: 'build' deploy: name: Deploy to GitHub Pages @@ -56,6 +52,9 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: + - name: Configure GitHub Pages + uses: actions/configure-pages@v4 + - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 diff --git a/docusaurus/Dockerfile b/docusaurus/Dockerfile index 77fdf68..b0e5945 100644 --- a/docusaurus/Dockerfile +++ b/docusaurus/Dockerfile @@ -21,9 +21,8 @@ ENV FORCE_COLOR=0 RUN corepack enable WORKDIR /opt/docusaurus -# Documentation contents -# The docs directory is overwritten by compose file -COPY docs docs +# Documentation contents from readmes/ (via additional_contexts) +COPY --from=readmes . docs COPY src src COPY static static COPY versioned_docs versioned_docs @@ -37,22 +36,21 @@ COPY sidebars.json . COPY test.js . COPY versions.json . +WORKDIR /opt/docusaurus +RUN [ ! -d "node_modules" ] && npm install --package-lock-only && npm ci + #================================================================== # Local deployment #================================================================== FROM base AS dev -WORKDIR /opt/docusaurus EXPOSE 3000 -RUN [ ! -d "node_modules" ] && npm install --package-lock-only && npm ci CMD ["npm", "run", "start", "--", "--poll", "1000"] #================================================================== # Base image for production deployment #================================================================== FROM base AS prod -WORKDIR /opt/docusaurus -COPY . /opt/docusaurus/ -RUN npm ci +ENV NODE_OPTIONS="--max-old-space-size=4096" RUN npm run build #================================================================== diff --git a/docusaurus/docker-compose.yml b/docusaurus/docker-compose.yml index 92494c8..afb7a78 100644 --- a/docusaurus/docker-compose.yml +++ b/docusaurus/docker-compose.yml @@ -5,6 +5,8 @@ services: dev: build: context: . + additional_contexts: + readmes: ../readmes target: dev container_name: docusaurus_local mem_limit: 4g @@ -15,9 +17,11 @@ services: environment: - NODE_ENV=development - serve: # TODO: fix issues + serve: build: context: . + additional_contexts: + readmes: ../readmes target: serve container_name: docusaurus ports: @@ -25,9 +29,11 @@ services: environment: - NODE_ENV=production - caddy: # TODO: fix issues + caddy: build: context: . + additional_contexts: + readmes: ../readmes target: caddy container_name: docusaurus_caddy ports: diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js index 2dadcd0..5733141 100644 --- a/docusaurus/docusaurus.config.js +++ b/docusaurus/docusaurus.config.js @@ -51,7 +51,7 @@ const config = { organizationName: 'magma', projectName: 'magma', - onBrokenLinks: 'throw', + onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', i18n: { @@ -168,8 +168,7 @@ const config = { // Add custom scripts here that would be placed in