-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
152 lines (139 loc) · 4.48 KB
/
ci.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
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
142
143
144
145
146
147
148
149
150
151
152
name: ci
on:
pull_request:
push:
branches: [main]
jobs:
detectChangedSourceFiles:
name: 'determine changes'
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changed-files-yaml.outputs.src_any_changed }}
steps:
- uses: actions/checkout@v3
- name: Detect changed files
id: changed-files-yaml
uses: tj-actions/changed-files@v39
with:
files_yaml: |
src:
- packages/formik/src/**
- packages/formik/package.json
- packages/formik-native/src/**
- packages/formik-native/package.json
benchmark:
if: needs.detectChangedSourceFiles.outputs.changes == 'true'
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: .nvmrc
- name: Detect changed files
id: changed-files-yaml
uses: tj-actions/changed-files@v39
with:
files_yaml: |
src:
- packages/formik/src/**
- packages/formik-native/src/**
- name: Install & build
run: |
node --version
npm --version
yarn --version
yarn install --frozen-lockfile
yarn build:benchmark
- name: Download previous benchmark data
uses: actions/cache@v3
with:
path: ./benchmark-cache
key: ${{ runner.os }}-benchmark
- name: Run benchmark
run: yarn benchmark
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
tool: benchmarkjs
external-data-json-path: ./benchmark-cache/benchmark-data.json
output-file-path: output.txt
# comment for PRs that's updated with current perf relative to baseline (main)
summary-always: true
# warn if slowness is detected; might be transient on rerun
alert-threshold: 110%
comment-on-alert: true
fail-on-alert: true
# if things get considerably slower, deny the PR
fail-threshold: 120%
# needed for commenting on PRs
github-token: ${{ secrets.GITHUB_TOKEN }}
interaction:
if: needs.detectChangedSourceFiles.outputs.changes == 'true'
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: .nvmrc
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Get installed Playwright version
id: playwright-version
run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package-lock.json').dependencies['@playwright/test'].version)")" >> $GITHUB_ENV
- name: Cache playwright binaries
uses: actions/cache@v3
id: playwright-cache
with:
path: |
~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}
- name: Install Playwright Browsers
run: yarn playwright install --with-deps
if: steps.playwright-cache.outputs.cache-hit != 'true'
- run: yarn playwright install-deps
if: steps.playwright-cache.outputs.cache-hit != 'true'
- name: Run Playwright tests
run: yarn playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 5
size:
if: needs.detectChangedSourceFiles.outputs.changes == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: preactjs/compressed-size-action@v2
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
build-script: 'turbo run build --filter {./packages/*}...'
unit:
if: needs.detectChangedSourceFiles.outputs.changes == 'true'
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: .nvmrc
- name: Install deps, build, and test
run: |
node --version
npm --version
yarn --version
yarn install --frozen-lockfile
yarn test --coverage
env:
CI: true
NODE_OPTIONS: --max-old-space-size=4096