1
0
Эх сурвалжийг харах

CI: Publish docs to Cloudflare Pages

derrod 2 жил өмнө
parent
commit
0a18c006ca

+ 53 - 0
.github/workflows/docs.yml

@@ -4,20 +4,34 @@ on:
   push:
     paths-ignore:
       - "cmake/**"
+    branches: ['*']
+    tags: ['*']
   pull_request:
     paths:
       - "docs/sphinx/**"
+  workflow_dispatch:
 
 jobs:
   docs:
     runs-on: ubuntu-latest
+    outputs:
+      commitHash: ${{ steps.setup.outputs.commitHash }}
+      commitBranch: ${{ steps.setup.outputs.commitBranch }}
+      fullCommitHash: ${{ steps.setup.outputs.fullCommitHash }}
     steps:
       - name: Checkout
         uses: actions/checkout@v3
+
       - name: Setup Environment
         id: setup
         run: |
+          BRANCH=$(git describe --exact-match --tags 2> /dev/null || git branch --show-current)
+          # Remove patch version from tag
+          BRANCH=$(echo ${BRANCH} | sed -e 's/\.[0-9]*$//')
+          echo "commitBranch=${BRANCH}" >> $GITHUB_OUTPUT
           echo "commitHash=$(git describe --exact-match --tags 2> /dev/null || git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
+          echo "fullCommitHash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
+
       - name: Bump Version Number
         shell: bash
         if: github.event_name == 'push'
@@ -40,6 +54,7 @@ jobs:
           SCOPY="copyright = '([A-Za-z0-9, ]+)'"
           RCOPY="copyright = '2017-$(date +"%Y"), Hugh Bailey'"
           sed -i -E -e "s/${SVER}/${RVER}/g" -e "s/${SREL}/${RREL}/g" -e "s/${SCOPY}/${RCOPY}/g" docs/sphinx/conf.py
+
       - uses: totaldebug/[email protected]
         with:
           sphinx_src: 'docs/sphinx'
@@ -47,9 +62,47 @@ jobs:
           target_branch: 'master'
           target_path: '../home/_build'
           pre_build_commands: 'pip install -Iv sphinx==5.1.1'
+
       - uses: actions/upload-artifact@v3
         with:
           name: 'OBS Studio Docs ${{ steps.setup.outputs.commitHash }}'
           path: |
             ${{ runner.temp }}/_github_home/_build
             !${{ runner.temp }}/_github_home/_build/.doctrees
+
+  deploy:
+    runs-on: ubuntu-latest
+    needs: docs
+    if: ${{ github.event_name == 'workflow_dispatch' || (github.repository_owner == 'obsproject' && startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request') }}
+    environment:
+      name: cf-pages-deploy
+    concurrency:
+      group: "cf-pages-deployment"
+      cancel-in-progress: true
+    steps:
+      - uses: actions/download-artifact@v3
+        with:
+          name: 'OBS Studio Docs ${{ needs.docs.outputs.commitHash }}'
+          path: docs
+
+      - name: Setup redirects
+        run: |
+          echo "/previous/27.2 https://obsproject.com/docs/27.2 302" >> docs/_redirects
+          echo "/previous/:major.:minor https://:major-:minor.${{ vars.CF_PAGES_PROJECT }}.pages.dev 302" >> docs/_redirects
+
+      - name: Publish to live page
+        uses: cloudflare/wrangler-action@4c10c1822abba527d820b29e6333e7f5dac2cabd
+        with:
+          workingDirectory: docs
+          apiToken: ${{ secrets.CF_API_TOKEN }}
+          accountId: ${{ secrets.CF_ACCOUNT_ID }}
+          command: pages publish . --project-name=${{ vars.CF_PAGES_PROJECT }} --commit-hash='${{ needs.docs.outputs.fullCommitHash }}'
+
+      - name: Publish to tag alias
+        if: ${{ startsWith(github.ref, 'refs/tags/') }}
+        uses: cloudflare/wrangler-action@4c10c1822abba527d820b29e6333e7f5dac2cabd
+        with:
+          workingDirectory: docs
+          apiToken: ${{ secrets.CF_API_TOKEN }}
+          accountId: ${{ secrets.CF_ACCOUNT_ID }}
+          command: pages publish . --project-name=${{ vars.CF_PAGES_PROJECT }} --commit-hash='${{ needs.docs.outputs.fullCommitHash }}' --branch='${{ needs.docs.outputs.commitBranch }}'