-
Notifications
You must be signed in to change notification settings - Fork 9
125 lines (123 loc) · 3.79 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
name: ci
on:
pull_request:
branches:
- main
paths:
- .github/workflows/ci.yml
- package.json
- src/**
# start: e2e #
- e2e/**
# end: e2e #
# start: docker #
- Dockerfile
# end: docker #
push:
branches:
- main
paths:
- .github/workflows/ci.yml
- package.json
- src/**
# start: e2e #
- e2e/**
# end: e2e #
# start: docker #
- Dockerfile
# end: docker #
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- run: pnpm lint
- run: npx biome check . && npx prettier --check './**/*.{md,yml}'
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- uses: ./.github/actions/setup-db
- run: pnpm build
# start: docker #
build-docker:
runs-on: ubuntu-latest
env:
NEXT_PUBLIC_SITE_URL: http://localhost:3000
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- uses: ./.github/actions/setup-db
- run: |
docker build \
-t app \
-f Dockerfile \
--add-host=host.docker.internal:host-gateway \
--build-arg DATABASE_USER=${{env.DATABASE_USER}} \
--build-arg DATABASE_PASSWORD=${{env.DATABASE_PASSWORD}} \
--build-arg DATABASE_DB=${{env.DATABASE_DB}} \
--build-arg DATABASE_HOST=${{env.DATABASE_HOST}} \
--build-arg DATABASE_PORT=${{env.DATABASE_PORT}} \
--build-arg DATABASE_SCHEMA=${{env.DATABASE_SCHEMA}} \
--build-arg GOOGLE_CLIENT_ID=${{env.GOOGLE_CLIENT_ID}} \
--build-arg GOOGLE_CLIENT_SECRET=${{env.GOOGLE_CLIENT_SECRET}} \
--build-arg NEXT_PUBLIC_SITE_URL=${{env.NEXT_PUBLIC_SITE_URL}} \
--build-arg NEXTAUTH_SECRET=${{env.NEXTAUTH_SECRET}} \
--build-arg TRACE_EXPORTER_URL=${{env.TRACE_EXPORTER_URL}} \
--build-arg STRIPE_PRICE_ID=${{env.STRIPE_PRICE_ID}} \
--build-arg STRIPE_SECRET_KEY=${{env.STRIPE_SECRET_KEY}} \
--build-arg STRIPE_WEBHOOK_SECRET=${{env.STRIPE_WEBHOOK_SECRET}} \
.
env:
# please set the following environment variables as github secrets
DATABASE_USER: local
DATABASE_PASSWORD: 1234
DATABASE_DB: database
DATABASE_HOST: host.docker.internal
DATABASE_PORT: 5432
DATABASE_SCHEMA: public
NEXTAUTH_SECRET: TKDdLVjf7cTyTs5oWVpv04senu6fia4RGQbYHRQIR5Q=
GOOGLE_CLIENT_ID: dummy
GOOGLE_CLIENT_SECRET: dummy
# start: otel #
TRACE_EXPORTER_URL: ""
# end: otel #
# start: stripe #
STRIPE_PRICE_ID: price_1
STRIPE_SECRET_KEY: pk_test_1
STRIPE_WEBHOOK_SECRET: whsec_1
# end: stripe #
- run: docker run -d -p 3000:3000 app
- run: |
until $(curl --output /dev/null --silent --fail ${{env.NEXT_PUBLIC_SITE_URL}}); do
printf '!'
sleep 1
done
timeout-minutes: 1
# end: docker #
unit-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- uses: ./.github/actions/setup-db
with:
run_db: false
- run: pnpm test
# start: e2e #
e2e-test:
runs-on: ubuntu-latest
env:
NEXTAUTH_SECRET: UfxvOS6HetHOFkL44YTITYgc0DOuOlz5TBp3jkbnZ3w=
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- uses: ./.github/actions/setup-db
with:
run_db: false
- run: pnpm exec playwright install chromium
- run: pnpm build:test
- run: pnpm test:e2e
# end: e2e #