CI: Publish docs to Cloudflare Pages

(cherry picked from commit 0a18c006ca)
This commit is contained in:
derrod 2023-01-29 09:05:33 +01:00
parent 414dccb2c3
commit 96aef4f048

View file

@ -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/sphinx-publish-action@1.2.0
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 }}'