forked from Expensify/App
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (111 loc) · 4.73 KB
/
deployExpensifyHelp.yml
File metadata and controls
132 lines (111 loc) · 4.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: Deploy ExpensifyHelp
on:
# Run on any push to main that has changes to the docs directory
push:
branches:
- main
paths:
- 'docs/**'
- '.github/workflows/deployExpensifyHelp.yml'
# Run on any pull request (except PRs against staging or production) that has changes to the docs directory
pull_request:
types: [opened, synchronize]
branches-ignore: [staging, production]
paths:
- 'docs/**'
- '.github/workflows/deployExpensifyHelp.yml'
# Run on any manual trigger
workflow_dispatch:
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
env:
IS_PR_FROM_FORK: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork }}
runs-on: blacksmith-2vcpu-ubuntu-2404
continue-on-error: true
steps:
- name: Checkout
# v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
fetch-depth: 0
- name: Install pcregrep
run: sudo apt-get install -y pcregrep
- name: Setup NodeJS
uses: ./.github/actions/composite/setupNode
- name: Create docs routes file
run: ./.github/scripts/createDocsRoutes.sh
- name: Check for duplicates and cycles in redirects.csv
run: ./.github/scripts/verifyRedirect.sh
- name: Enforce that a redirect link has been created
run: ./.github/scripts/enforceRedirect.sh
- name: Enforce iframe and Cloudflare CDN usage
run: ./.github/scripts/enforceVideoFormats.sh
- name: Generate allowed URLs whitelist for AI search
run: npx ts-node .github/scripts/generateAllowedUrls.ts
- name: Set up Ruby
# v1.306.0
uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f
with:
bundler-cache: true
working-directory: ./docs
- name: Build Jekyll site
run: bundle exec jekyll build --source ./ --destination ./_site
working-directory: ./docs
- name: Deploy to Cloudflare Pages
uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca
id: deploy
if: env.IS_PR_FROM_FORK != 'true'
with:
apiToken: ${{ secrets.CLOUDFLARE_PAGES_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: helpdot
directory: ./docs/_site
- name: Setup Cloudflare CLI
if: env.IS_PR_FROM_FORK != 'true'
run: pip3 install cloudflare==2.19.0
- name: Purge Cloudflare cache
if: env.IS_PR_FROM_FORK != 'true'
run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["help.expensify.com"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache
env:
CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }}
- name: Check if only articles are updated
if: ${{ github.event_name == 'pull_request' }}
id: verify_articles_only_updated
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
with:
filters: |
articles:
- 'docs/articles/**'
- 'docs/**/*.csv'
- name: Ensure PR title has [No QA] prefix
if: ${{ github.event_name == 'pull_request' && env.IS_PR_FROM_FORK != 'true' && steps.verify_articles_only_updated.outputs.articles == 'true' }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPO: ${{ github.repository }}
run: |
current_title=$(gh pr view "$PR_NUMBER" --repo "$REPO" --json title -q '.title')
if [[ "$current_title" == "[No QA]"* ]]; then
echo "PR title already contains [No QA]; skipping."
exit 0
fi
gh pr edit "$PR_NUMBER" --repo "$REPO" --title "[No QA] $current_title"
- name: Generate ExpensifyHelp preview comment
id: preview_comment
if: ${{ github.event_name == 'pull_request' && env.IS_PR_FROM_FORK != 'true' }}
uses: ./.github/actions/javascript/generateHelpPreviewComment
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ROOT_URL: ${{ steps.deploy.outputs.alias }}
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
- name: Leave a comment on the PR
uses: actions-cool/maintain-one-comment@de04bd2a3750d86b324829a3ff34d47e48e16f4b
if: ${{ github.event_name == 'pull_request' && env.IS_PR_FROM_FORK != 'true' }}
with:
token: ${{ secrets.OS_BOTIFY_TOKEN }}
body: ${{ steps.preview_comment.outputs.BODY }}