-
Notifications
You must be signed in to change notification settings - Fork 0
197 lines (165 loc) · 6.11 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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
name: CI
on:
pull_request:
branches: ["!renovate/**", "**"]
push:
branches: ["renovate/**"]
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DATABASE_URL_POSTGRE: ${{ secrets.DATABASE_URL_POSTGRE }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
RECAPTCHA_SECRET: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
NEXT_PUBLIC_CAPTCHA_SITE_KEY: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
NEXTAUTH_URL: http://127.0.0.1:3000
CROSS_SITE_SECRET: ${{ secrets.CROSS_SITE_SECRET }}
BACKEND_URL: https://api.plandeprise.fr
PRISMA_GENERATE: "prisma generate --schema=./src/schema.cockroach.prisma"
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v3
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install deps (with cache)
run: pnpm install
- name: Build, lint and type-check
run: pnpm turbo lint typecheck --filter=!@plan-prise/db-migration
- name: Format
id: prettier
run: pnpm turbo format --filter=!@plan-prise/db-migration
- name: Show diff
# https://docs.github.com/en/actions/learn-github-actions/expressions#failure
if: ${{ failure() }}
run: |
pnpm format:fix
git diff -- . ':(exclude)package-lock.json' ':(exclude)package.json' > diff.txt
pnpm install -g diff2html-cli
diff2html -i file -s side -F diff.html -- diff.txt
- name: Upload html diff
if: ${{ failure() && steps.prettier.conclusion == 'failure' }}
uses: actions/upload-artifact@v4
with:
name: HTML Diff
path: diff.html
retention-days: 3
build:
runs-on: ubuntu-latest
needs: check
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v3
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup nextjs cache
uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/frontend/.next
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- name: Install deps (with cache)
run: pnpm install
- name: Build project
run: pnpm build
tests:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
test-files:
- auth
- plan
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v3
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup nextjs cache
uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/frontend/.next
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- name: Get playwright version from package.json
id: playwright-version
run: echo version=$(cat tests/package.json | jq -r '.dependencies."@playwright/test"') >> "$GITHUB_OUTPUT"
- name: Get cache for playwright
uses: actions/cache@v4
id: playwright-cache
with:
path: |
~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }}
- name: Install deps (with cache)
run: pnpm install
- name: Install playwright dependencies if not cached
run: pnpm --filter @plan-prise/tests exec playwright install --with-deps
if: steps.playwright-cache.outputs.cache-hit != 'true'
- name: Do not install playwright dependencies if not cached
run: pnpm --filter @plan-prise/tests exec playwright install-deps
if: steps.playwright-cache.outputs.cache-hit == 'true'
- name: Run tests
run: pnpm test tests/${{ matrix.test-files }}.test.ts
- name: Upload report
uses: actions/upload-artifact@v3
if: failure()
with:
name: playwright-report
path: tests/test-results
retention-days: 2