-
Notifications
You must be signed in to change notification settings - Fork 1
152 lines (143 loc) · 4.44 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:
push:
branches: [main]
pull_request:
workflow_dispatch:
env:
# Use production API for codegen to make sure production is compatible with the code to be merged
API_URL: 'https://api.mpdx.org/graphql'
SITE_URL: 'http://stage.mpdx.org'
jobs:
test:
runs-on: ubuntu-latest
name: test (chunk ${{ matrix.chunk }})
strategy:
matrix:
chunk: [1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8, 8/8]
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
uses: nick-fields/retry@v3
with:
command: yarn gql
timeout_minutes: 1
retry_wait_seconds: 60
max_attempts: 5
- name: 🧪 Test (chunk ${{ matrix.chunk }})
run: yarn test:coverage --ci --shard ${{ matrix.chunk }}
- name: Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
eslint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
uses: nick-fields/retry@v3
with:
command: yarn gql
timeout_minutes: 1
retry_wait_seconds: 60
max_attempts: 5
- name: 💨 ESLint
run: yarn lint:ci
typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
uses: nick-fields/retry@v3
with:
command: yarn gql
timeout_minutes: 1
retry_wait_seconds: 60
max_attempts: 5
- name: ✅ TypeScript lint
run: yarn lint:ts
prettier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 💅 Prettier Check
run: yarn prettier:check
yarn-check-cache:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 🔍 Check Yarn Cache
run: yarn install --immutable --immutable-cache --check-cache
onesky-upload:
runs-on: ubuntu-latest
needs: [test, eslint, typescript, prettier]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 🌐 Extract Translations
run: yarn extract
- name: ⛅🔼 OneSky Upload
env:
ONESKY_API_KEY: ${{ secrets.ONESKY_API_KEY }}
ONESKY_API_SECRET: ${{ secrets.ONESKY_API_SECRET }}
ONESKY_PROJECT_ID: ${{ secrets.ONESKY_PROJECT_ID }}
run: yarn onesky:upload
bundle-analyzer:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .tool-versions
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
uses: nick-fields/retry@v3
with:
command: yarn gql
timeout_minutes: 1
retry_wait_seconds: 60
max_attempts: 5
- name: Build Next.js app
run: yarn build
env:
secrets: '{"JWT_SECRET":"JWT_SECRET","OKTA_CLIENT_SECRET":"OKTA_CLIENT_SECRET"}'
- name: Analyze bundle sizes
uses: transferwise/actions-next-bundle-analyzer@v2
with:
create-issue: false
env:
# This secret is automatically injected by GitHub
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}