-
Notifications
You must be signed in to change notification settings - Fork 1
136 lines (127 loc) · 4.05 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
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
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://next-stage.mpdx.org'
jobs:
split-tests:
runs-on: ubuntu-latest
outputs:
test-chunks: ${{ steps['set-test-chunks'].outputs['test-chunks'] }}
test-chunk-ids: ${{ steps['set-test-chunk-ids'].outputs['test-chunk-ids'] }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- id: set-test-chunks
name: Set Chunks
run: echo "test-chunks=$(yarn test --silent --listTests --json | jq -cM '[_nwise(length / 4 | ceil)]')" >> $GITHUB_OUTPUT
- id: set-test-chunk-ids
name: Set Chunk IDs
run: echo "test-chunk-ids=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
env:
CHUNKS: ${{ steps['set-test-chunks'].outputs['test-chunks'] }}
test:
runs-on: ubuntu-latest
name: test (chunk ${{ matrix.chunk }})
needs:
- split-tests
strategy:
matrix:
chunk: ${{ fromJson(needs.split-tests.outputs['test-chunk-ids']) }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
run: |
yarn gql
yarn gql:server
- name: 🧪 Test (chunk ${{ matrix.chunk }})
run: echo $CHUNKS | jq '.[${{ matrix.chunk }}] | .[] | @text' | xargs yarn test:coverage --ci
env:
CHUNKS: ${{ needs.split-tests.outputs['test-chunks'] }}
- 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: 18
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
run: |
yarn gql
yarn gql:server
- name: 💨 ESLint
run: yarn lint:ci
typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- name: 📈 Run GraphQL Codegen
run: |
yarn gql
yarn gql:server
- 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: 18
- 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: 18
- name: 📦 Install Dependencies
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: 18
- name: 📦 Install Dependencies
run: yarn install --immutable --immutable-cache
- 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