-
Notifications
You must be signed in to change notification settings - Fork 5
/
repo.schema.yaml
360 lines (334 loc) · 11.2 KB
/
repo.schema.yaml
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
type: object
description: JSONSchema for repo.yaml configuration file
required: [ name, description, type, codeowners ]
additionalProperties: false
properties:
$meta:
type: object
description: Repo-specific metadata
name:
type: string
description: The git repository name.
pattern: ^[a-z0-9-]+$
minLength: 1
maxLength: 50
description:
type: string
description: >
Repository description that shows up in the sidebar on GitHub, and as the first line of the README after the
repository name.
minLength: 1
maxLength: 100
type:
type: string
description: >
Classification of repository type. Influences what additional files repo-ansible will generate when
run.<br>The last 3 listed types have been deprecated and should not be used on new projects.
enum:
- php-web
- php-library
- php-cli
- nodejs-web
- nodejs-library
- nodejs-cli
- other
# DEPRECATED enums
- application
- library
- symfony-bundle
codeowners:
type: array
description: >
Each array item contains a file/directory pattern and an array of individuals or teams responsible for reviewing
and maintaining files/directories that match the specified pattern. For a list of allowed patterns, refer to
[CODEOWNERS syntax](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).
items:
type: object
properties:
pattern:
type: string
description: >
Define patterns that match files or directories within your repository. These patterns can use wildcard
characters (e.g., * for any characters) to match multiple files or directories. Ensure to enclose patterns
containing asterisks in quotation marks, e.g. '/docs/*'. A single asterisk '*' indicates default owners for
everything in the repo.
owners:
type: array
description: >
A list of individuals or teams responsible for reviewing and maintaining files/directories matching the
specified pattern. For GitHub usernames, add an @ symbol before the username and enclose the entire pattern
in quotation marks, e.g. '@joostfaassen'.
items:
type: string
license:
type: string
description: Repository license
default: proprietary
enum:
- mit
- gpl-v3
- proprietary
license_year:
type: number
description: >
Year when the license was applied to the repository. Used with the MIT license, as it includes the year as part
of the generated LICENSE file. Defaults to current year if not set.
visibility:
type: string
description: GitHub repository visibility.
default: private
enum:
- public
- private
lifecycle:
type: string
description: Project lifecycle stage.
enum:
- dev-research
- dev-prod-bound
- dev-prod
- dev-maintenance
- deprecated-prod
- archived
user_scope:
type: array
description: Additional project classification in terms of users served.
items:
type: string
enum:
- external-customer-facing-app
- internal-team-facing-app
- enables-external-customer-facing-apps
- enables-internal-team-facing-apps
- internal-devops-tooling
github:
type: object
description: GitHub specific values
additionalProperties: false
properties:
topics:
type: array
description: GitHub topics. An array of strings.
items:
type: string
default_branch:
type: string
default: main
description: >
Default branch configuration in GitHub (default main). Override for older repositories that still use master
branch. Consider updating your repository to include a main branch and remove this option.
workflows:
type: object
description: GitHub workflows for various parts of the software development lifecycle.
additionalProperties: false
properties:
review:
type: boolean
default: true
description: >
The review workflow will trigger for pull requests and will check if the commit messages conform with
conventional commits, and if cards are referenced as part of the commit message.
features:
type: object
description: GitHub features
additionalProperties: false
properties:
dependabot_auto_merge:
description: >
Generate workflow that automatically merges Dependabot PRs for patch and minor version releases.<br>
*Note that merging the PR won't automatically trigger other followup workflows.*
type: boolean
default: true
downloads:
description: Enable repository downloads.
type: boolean
default: true
squash_merge:
description: Allow squash-merging pull requests.
type: boolean
default: true
merge_commit:
description: Allow merging pull requests with merge commit.
type: boolean
default: true
rebase_merge:
description: Allow rebase-merging pull requests.
type: boolean
default: true
sdlc_workflows:
description: >
**EXPERIMENTAL** Software Development Lifecycle Workflows. Property will likely be removed in
the future, and enabled by default, when workflows have been stabilized.
type: boolean
default: false
wiki:
description: Enable Wiki tab.
type: boolean
default: false
issues:
description: Enable issues tab.
type: boolean
default: false
projects:
description: Enable projects tab.
type: boolean
default: false
php:
type: object
description: PHP specific values
docker:
type: object
description: Docker specific values
devcontainer:
additionalProperties: false
type: object
description: Devcontainer specific values
properties:
custom_docker_compose_yaml:
type: boolean
default: false
description: >
When enabled no pre-defined .devcontainer/docker-compose.yaml file will be generated, and instead the
devcontainer will attempt to use a docker-compose.yaml file located in the root of the repository.
postCreateCommand:
description: >
Additional (shell) commands to run when the containers is created. For a typical project you would specify
commands that only need to run once when the project is setup. For example you might add a command in here to
load database fixtures for your project.
type: string
postStartCommand:
description: >
Additional (shell) commands to run when the container is started. This event takes place after the create
event, but opposed to the create event it's triggered every time the container is started (including when
it's resumed from a suspended state). In a typical JavaScript application you might set it to run a
`npm run dev` or equivalent step.
type: string
customizations_vscode:
type: object
additionalProperties: false
default: {}
description: >
Customizations done in this group will be merged with the default values configured in
[group_vars/all.yaml](group_vars/all.yaml)
properties:
extensions:
type: array
description: >
Additional extensions to install. Refer to the [group_vars/all.yaml](group_vars/all.yaml) file for
extensions installed by default.
settings:
type: object
description: >
Settings overrides for VSCode and installed extensions. Refer to the
[group_vars/all.yaml](group_vars/all.yaml) file regarding proper format and default values.
private_packagist:
type: boolean
default: true
description: >
Repository requires private packagist access. Property is ignored is not of type php-*, or the
other (deprecated) types: application, library, symfony-bundle.
repository:
type: string
description: Image to use for devcontainer (registry image URL)
default: ghcr.io/linkorb/php-docker-base
tag:
description: Image tag
type: string
default: php8-review
helm_charts:
type: boolean
default: false
description: Enable generation of Helm charts.
phpqa:
type: object
description: phpqa tools specific values
additionalProperties: false
properties:
phpstan:
type: object
properties:
level:
type: number
description: phpstan level
default: 0
path:
type: array
description: Path to directories for phpstan
default:
- src
php_cs_fixer:
type: object
properties:
paths:
type: array
description: Paths to included directories
default:
- src
paths_exclude:
type: array
description: Paths to excluded directories
default: []
composer_unused:
type: object
properties:
filtered_packages:
type: array
description: List of project specific packages that should be ignored by composer-unused (PHP regex)
default_filtered_packages:
type: array
default:
- /^ext-.*/
security:
type: object
additionalProperties: false
properties:
email:
type: string
default: security@linkorb.com
description: e-mail address for reporting security issues
pgp-url:
type: string
default: https://engineering.linkorb.com/pgp-key
archived:
type: boolean
default: false
description: >
Setting this option to `true` will cause the repository to be archived. Once archived, it can only be unarchived
manually.
website:
type: string
description: URL with more information about of this repository
default: https://engineering.linkorb.com
readme:
type: object
additionalProperties: false
properties:
enable_generation:
type: boolean
default: true
description: README.md file generation (enabled by default)
about:
$ref: "#/definitions/section"
intro:
$ref: "#/definitions/section"
installation:
$ref: "#/definitions/section"
configuration:
$ref: "#/definitions/section"
usage:
$ref: "#/definitions/section"
enabled:
type: boolean
default: true
definitions:
section:
type: object
properties:
title:
type: string
content:
type: string
after:
type: string
before:
type: string