* CloudFlare Pages add Preview URL to PR --------- Co-authored-by: Hien To <tominhhien97@gmail.com>
99 lines
3.7 KiB
YAML
99 lines
3.7 KiB
YAML
name: Jan Docs
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'docs/**'
|
|
tags: ["v[0-9]+.[0-9]+.[0-9]+-docs"]
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'docs/**'
|
|
- '.github/workflows/jan-docs.yml'
|
|
# Review gh actions docs if you want to further define triggers, paths, etc
|
|
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
|
|
|
|
jobs:
|
|
deploy:
|
|
name: Deploy to GitHub Pages
|
|
env:
|
|
CLOUDFLARE_ACCOUNT_ID: 9707100ef42a1a25bd70e3ee2137bd0e
|
|
CLOUDFLARE_PROJECT_NAME: jan
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
deployments: write
|
|
pull-requests: write
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Install jq
|
|
uses: dcarbone/install-jq-action@v2.0.1
|
|
|
|
- name: Fill env vars
|
|
run: |
|
|
env_example_file=".env.example"
|
|
touch .env
|
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
if [[ "$line" == *"="* ]]; then
|
|
var_name=$(echo $line | cut -d '=' -f 1)
|
|
echo $var_name
|
|
var_value="$(jq -r --arg key "$var_name" '.[$key]' <<< "$SECRETS")"
|
|
echo "$var_name=$var_value" >> .env
|
|
fi
|
|
done < "$env_example_file"
|
|
working-directory: docs
|
|
env:
|
|
SECRETS: '${{ toJson(secrets) }}'
|
|
|
|
- name: Install dependencies
|
|
run: yarn install
|
|
working-directory: docs
|
|
- name: Build website
|
|
run: sed -i '/process.env.DEBUG = namespaces;/c\// process.env.DEBUG = namespaces;' ./node_modules/debug/src/node.js && yarn build
|
|
working-directory: docs
|
|
|
|
- name: Publish to Cloudflare Pages PR Preview and Staging
|
|
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main')
|
|
uses: cloudflare/pages-action@v1
|
|
with:
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
accountId: ${{ env.CLOUDFLARE_ACCOUNT_ID }}
|
|
projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }}
|
|
directory: ./docs/build
|
|
# Optional: Enable this if you want to have GitHub Deployments triggered
|
|
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
|
|
id: deployCloudflarePages
|
|
|
|
- uses: mshick/add-pr-comment@v2
|
|
if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main'
|
|
with:
|
|
message: |
|
|
Preview URL: ${{ steps.deployCloudflarePages.outputs.url }}
|
|
|
|
- name: Add Custome Domain file
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
run: echo "${{ vars.DOCUSAURUS_DOMAIN }}" > ./docs/build/CNAME
|
|
|
|
# Popular action to deploy to GitHub Pages:
|
|
# Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus
|
|
- name: Deploy to GitHub Pages
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
uses: peaceiris/actions-gh-pages@v3
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
# Build output to publish to the `gh-pages` branch:
|
|
publish_dir: ./docs/build
|
|
# The following lines assign commit authorship to the official
|
|
# GH-Actions bot for deploys to `gh-pages` branch:
|
|
# https://github.com/actions/checkout/issues/13#issuecomment-724415212
|
|
# The GH actions bot is used by default if you didn't specify the two fields.
|
|
# You can swap them out with your own user credentials.
|
|
user_name: github-actions[bot]
|
|
user_email: 41898282+github-actions[bot]@users.noreply.github.com |