-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
147 lines (135 loc) · 2.55 KB
/
.gitlab-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
# include:
# - remote: 'https://gitlab.com/yesolutions/gitlab-ci-templates/raw/main/templates/pre-commit-autofix.yaml'
stages:
- build
- typecheck
- lint
- test
# App
.pre_pnpm: &pre_pnpm
- cd app
- corepack enable
- corepack prepare pnpm@latest-9 --activate
- pnpm config set store-dir .pnpm-store
- pnpm set verify-store-integrity false
build:app:
stage: build
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
typecheck:app:
stage: typecheck
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install --prefer-offline
- pnpm check
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
lint:app:
stage: lint
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install --prefer-offline
- pnpm lint
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
test:app:
stage: test
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install --prefer-offline
- pnpm test:unit --coverage
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
# Kernel
.pre_poetry: &pre_poetry
- cd kernel
- pip install poetry
- poetry config virtualenvs.in-project true
build:kernel:
stage: build
image: python:3.12
rules:
- changes:
- kernel/**/*
script:
- *pre_poetry
- poetry install
cache:
paths:
- /kernel/.venv
lint:kernel:
stage: lint
image: python:3.12
rules:
- changes:
- kernel/**/*
script:
- *pre_poetry
- poetry install
- pip install ruff
- ruff check
cache:
paths:
- /kernel/.venv
test:kernel:
stage: test
image: python:3.12
rules:
- changes:
- kernel/**/*
script:
- *pre_poetry
- apt update
- apt install ffmpeg -y
- poetry install --with=dev
- poetry run coverage run -m pytest
- poetry run coverage report -m
- poetry run coverage xml
coverage: '/TOTAL.*\s+(\d+%)$/'
allow_failure: false
cache:
paths:
- /kernel/.venv