blob: bc556e721f6ed7f9b1d227ffa699f87bb7f3ae4e (
plain)
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
133
134
135
136
137
138
139
140
141
|
# This is more or less a copy of
# https://github.com/mdn/content/blob/main/.github/workflows/pr-test.yml
# but done in a way that it first checks out mdn/translated-content (or
# fork of) and _then_ checks out mdn/content which has the relevant
# CI related tooling.
name: PR Test
on:
pull_request:
branches:
- main
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v2
with:
repository: mdn/content
path: mdn/content
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.4
with:
node-version: "12"
- name: Cache node_modules
uses: actions/cache@v2.1.4
id: cached-node_modules
with:
path: |
${{ github.workspace }}/mdn/content/node_modules
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- name: Install all yarn packages
if: steps.cached-node_modules.outputs.cache-hit != 'true'
working-directory: ${{ github.workspace }}/mdn/content
run: |
yarn --frozen-lockfile
- name: Config git core.quotePath
run: |
# If you don't do this, the get-diff-action won't be able to
# notice files that contain non-ascii characters.
# I.e.
#
# ▶ git status
# Changes not staged for commit:
# ...
# modified: "files/en-us/glossary/b\303\251zier_curve/index.html"
#
# But after you set `core.quotePath` you get:
#
# ▶ git status
# Changes not staged for commit:
# ...
# modified: "files/en-us/glossary/bézier_curve/index.html"
#
# Now, this gets used by the `git diff ...` inside get-diff-action.
git config --global core.quotePath false
- uses: technote-space/get-diff-action@v4.1.1
id: git_diff_content
with:
PATTERNS: files/**/*.html
SET_ENV_NAME: GIT_DIFF_CONTENT
- name: Build changed content
if: ${{ env.GIT_DIFF_CONTENT }}
env:
CONTENT_ROOT: ${{ github.workspace }}/mdn/content/files
CONTENT_TRANSLATED_ROOT: ${{ github.workspace }}/files
working-directory: ${{ github.workspace }}/mdn/content
run: |
echo ${{ env.GIT_DIFF_CONTENT }}
# Some day, when our number of flaws have reached 0 we'll change
# this to "*:error" which means the slightest flaw in the build
# will break the build.
# See https://github.com/mdn/yari/issues/715
export BUILD_FLAW_LEVELS="unsafe_html: error, *:ignore"
# Note, it might be interesting to explore building *some*
# pages in a PR build if the diff doesn't have any index.html
# files changed.
# Instead of building the git diff, you build some known typical
# folders that you know don't take too long and do cover a lot
# of interesting macros etc.
# This way, when an edit to the source code comes in, perhaps the
# functional tests have a gap in them but actually building
# real content exposes it.
# Setting this to an empty string effectively means that the
# <iframe> src will end up being the relative URL of the current
# document as a base.
# I.e. like this, if the current document is '/en-US/docs/Foo':
# <iframe src="/en-US/docs/Foo/_samples_/index.html">
# ...for example.
# Yes, it's potentially "insecure" because the iframe will execute
# whatever code is inserted into the code example. But since the
# whole (possible) domain for PR builds will never be somewhere
# where there are interesting cookies, it's a safe choice.
export BUILD_LIVE_SAMPLES_BASE_URL=
# In these builds we never care for or need the ability to sign in.
# This environment variable will disable that functionality entirely.
export REACT_APP_DISABLE_AUTH=true
# If we don't do this the built files will end up in
# `node_modules/@mdn/yari/client/build/` and we don't want that
# to get pushed into the cache.
export BUILD_OUT_ROOT=/tmp/
export BUILD_NO_PROGRESSBAR=true
# The reason this script isn't in `package.json` is because
# you don't need that script as a writer. It's only used in CI
# and it can't use the default CONTENT_ROOT that gets set in
# package.json.
yarn build ${{ env.GIT_DIFF_CONTENT }}
- uses: technote-space/get-diff-action@v4.1.1
with:
PATTERNS: files/**/*.+(png|jpeg|jpg|gif|svg|webp)
ABSOLUTE: true
SET_ENV_NAME: GIT_DIFF_FILES
- name: Check changed files
if: ${{ env.GIT_DIFF_FILES }}
env:
CONTENT_ROOT: ${{ github.workspace }}/mdn/content/files
CONTENT_TRANSLATED_ROOT: ${{ github.workspace }}/files
working-directory: ${{ github.workspace }}/mdn/content
run: |
echo ${{ env.GIT_DIFF_FILES }}
yarn filecheck ${{ env.GIT_DIFF_FILES }}
|