Configure github pages
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 8 May 2023 00:35:16 +0000 (10:35 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 4 Jul 2023 04:56:32 +0000 (14:56 +1000)
Upload the doxygen output as artifact from the linux build and use that from
the pages job where we combine the static website with our newly build HTML
docs.  The GitHub actions/download-artefact doesn't work across workflows so
we use the other popular one that can do this. The rest of the job is
basically copy/paste from the "Static HTML" example GitHub provides.

To make this useful as drop-in replacement, replace the one fixed link to the
API docs a relative one.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
.github/workflows/linux.yml
.github/workflows/pages.yml [new file with mode: 0644]

index aac3081..8b53e48 100644 (file)
@@ -34,7 +34,7 @@ jobs:
       - name: Setup
         run: |
           # -gdwarf-4 - see https://github.com/llvm/llvm-project/issues/56550.
-          CFLAGS='-gdwarf-4' meson setup build
+          CFLAGS='-gdwarf-4' meson setup build -Denable-cool-uris=true
         env:
           CC: ${{ matrix.compiler }}
       - name: Build
@@ -53,3 +53,10 @@ jobs:
           name: test logs
           path: |
             build/meson-logs/
+      - name: Store doxygen docs for use by the pages workflow
+        uses: actions/upload-artifact@v3
+        if: success()
+        with:
+          name: doxygen-docs
+          path: |
+            build/html/
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
new file mode 100644 (file)
index 0000000..d903390
--- /dev/null
@@ -0,0 +1,55 @@
+name: Deploy to GitHub pages
+
+on:
+  push:
+    branches: ["master"]
+
+  # Allow running this workflow manually from the Actions tab
+  workflow_dispatch:
+
+permissions:
+  contents: read
+  pages: write
+  id-token: write
+
+# Allow only one concurrent deployment
+concurrency:
+  group: "pages"
+  cancel-in-progress: false
+
+jobs:
+  deploy:
+    runs-on: ubuntu-22.04
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
+
+    steps:
+      - name: Set up directory tree
+        run: mkdir -p public_html/doc/
+      - name: Download doxygen from Linux build
+        uses: dawidd6/action-download-artifact@v2
+        with:
+          workflow: linux.yml
+          workflow_conclusion: success
+          name: doxygen-docs
+          path: doxygen/
+      - name: Move doxygen to target directory
+        run: mv doxygen/ public_html/doc/current/
+      - name: Check out the static website
+        uses: actions/checkout@v3
+        with:
+          repository: xkbcommon/website
+          persist-credentials: false
+          path: website
+      - name: Move static website to target directory
+        run: mv website/* public_html/
+      - name: Setup Pages
+        uses: actions/configure-pages@v3
+      - name: Upload pages artifact
+        uses: actions/upload-pages-artifact@v1
+        with:
+          path: public_html/
+      - name: Deploy to GitHub Pages
+        id: deployment
+        uses: actions/deploy-pages@v2