-
Notifications
You must be signed in to change notification settings - Fork 509
113 lines (93 loc) · 3.59 KB
/
npm-published-simulation.yml
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
# Instead of waiting for Yari to be published to npmjs.com and be upgraded
# inside mdn/content by Dependabot, we do all those steps here using `npm pack`.
name: NPM Publish simulation
on:
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: mdn/content
path: mdn/content
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "yarn"
- name: Install all yarn packages
run: yarn --frozen-lockfile
env:
# https://github.com/microsoft/vscode-ripgrep#github-api-limit-note
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Setup kernel for react native, increase watchers
run: |
# When running Yari on Linux, you might get the
# "Error: ENOSPC: System limit for number of file watchers reached" error.
# This, resolves that.
# Source https://github.com/expo/expo-github-action/issues/20#issuecomment-541676895
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
- name: Prepare to build
env:
# The following env vars is what we do in npm-publish.yml
# Each variable set is documented there.
REACT_APP_WRITER_MODE: true
REACT_APP_DISABLE_AUTH: true
CONTENT_ROOT: testing/content/files
run: |
yarn build:prepare
- name: Build and install tarball
run: |
echo mdn/content/ >> .npmignore
npm pack
TARBALL=`ls mdn-yari-*.tgz`
echo $TARBALL
ls -lh $TARBALL
mv $TARBALL mdn/content/
cd mdn/content
yarn cache clean --all
yarn add file:$TARBALL
yarn install
- name: (mdn/content) yarn yari-build --help
working-directory: mdn/content
run: yarn yari-build --help
- name: (mdn/content) yarn yari-filecheck --help
working-directory: mdn/content
run: yarn yari-filecheck --help
- name: (mdn/content) yarn yari-tool
working-directory: mdn/content
run: yarn yari-tool --help
- name: (mdn/content) yarn start
working-directory: mdn/content
run: yarn start > /tmp/stdout.log 2> /tmp/stderr.log &
- name: View some URLs on localhost:5042
run: |
curl --retry-connrefused --retry 5 -I http://localhost:5042
# Basically, test if it 200 OKs. If not, this'll exit non-zero.
curl http://localhost:5042/en-US/ > /dev/null
curl http://localhost:5042/en-US/docs/MDN/Kitchensink > /dev/null
- name: Test viewing the dev server
env:
# When running Yari from within mdn/content it only starts 1 server;
# the one on localhost:5042. No React dev server; the one
# on localhost:3000.
# Testing that dev server is not relevant or important in this context.
DEVELOPING_SKIP_DEV_URL: true
run: |
yarn test:developing
- name: SSR build a page
working-directory: mdn/content
run: |
yarn build files/en-us/mdn/kitchensink/index.md
- name: Debug server's stdout and stderr if tests failed
if: failure()
run: |
echo "STDOUT..................................................."
cat /tmp/stdout.log
echo ""
echo "STDERR..................................................."
cat /tmp/stderr.log