@oddessentials/repo-standards 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/config/standards.csharp-dotnet.azure-devops.json +141 -8
- package/dist/config/standards.csharp-dotnet.github-actions.json +141 -8
- package/dist/config/standards.csharp-dotnet.json +153 -8
- package/dist/config/standards.go.azure-devops.json +141 -8
- package/dist/config/standards.go.github-actions.json +141 -8
- package/dist/config/standards.go.json +153 -8
- package/dist/config/standards.json +614 -25
- package/dist/config/standards.python.azure-devops.json +153 -8
- package/dist/config/standards.python.github-actions.json +153 -8
- package/dist/config/standards.python.json +165 -8
- package/dist/config/standards.rust.azure-devops.json +140 -7
- package/dist/config/standards.rust.github-actions.json +140 -7
- package/dist/config/standards.rust.json +152 -7
- package/dist/config/standards.typescript-js.azure-devops.json +151 -10
- package/dist/config/standards.typescript-js.github-actions.json +151 -10
- package/dist/config/standards.typescript-js.json +163 -10
- package/package.json +1 -1
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"stage": "release"
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
|
-
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
|
|
124
|
+
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history. Maintain a single canonical version source (for example, package.json or VERSION) that all release artifacts use.",
|
|
125
125
|
"id": "semantic-versioning",
|
|
126
126
|
"label": "Semantic Versioning",
|
|
127
127
|
"stack": {
|
|
@@ -133,8 +133,44 @@
|
|
|
133
133
|
"goreleaser",
|
|
134
134
|
"semantic-release"
|
|
135
135
|
],
|
|
136
|
-
"notes": "Go uses git tags
|
|
137
|
-
"
|
|
136
|
+
"notes": "Go uses git tags (v1.2.3) as the canonical version source. Use goreleaser for automated releases with changelog generation and publish GitHub/Docker artifacts from the same tag.",
|
|
137
|
+
"optionalFiles": [
|
|
138
|
+
".goreleaser.yml",
|
|
139
|
+
"CHANGELOG.md"
|
|
140
|
+
],
|
|
141
|
+
"requiredScripts": [
|
|
142
|
+
"release"
|
|
143
|
+
],
|
|
144
|
+
"verification": "Check that git tags follow vMAJOR.MINOR.PATCH format and goreleaser or similar tooling generates releases and changelogs."
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"ciHints": {
|
|
149
|
+
"azure-devops": {
|
|
150
|
+
"stage": "release"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"description": "Use a single CI release pipeline that publishes all artifacts (GitHub releases, packages, containers) from the same canonical version source.",
|
|
154
|
+
"id": "unified-release-workflow",
|
|
155
|
+
"label": "Unified Release Workflow",
|
|
156
|
+
"stack": {
|
|
157
|
+
"exampleConfigFiles": [
|
|
158
|
+
".github/workflows/release.yml",
|
|
159
|
+
"azure-pipelines.yml"
|
|
160
|
+
],
|
|
161
|
+
"exampleTools": [
|
|
162
|
+
"goreleaser",
|
|
163
|
+
"docker buildx"
|
|
164
|
+
],
|
|
165
|
+
"notes": "Use a single release pipeline (goreleaser or equivalent) to publish GitHub releases and Docker images from the same git tag.",
|
|
166
|
+
"optionalFiles": [
|
|
167
|
+
".goreleaser.yml",
|
|
168
|
+
"CHANGELOG.md"
|
|
169
|
+
],
|
|
170
|
+
"requiredScripts": [
|
|
171
|
+
"release"
|
|
172
|
+
],
|
|
173
|
+
"verification": "Trigger the release pipeline and confirm all artifacts share the same version number and tag."
|
|
138
174
|
}
|
|
139
175
|
},
|
|
140
176
|
{
|
|
@@ -143,10 +179,17 @@
|
|
|
143
179
|
"stage": "quality"
|
|
144
180
|
}
|
|
145
181
|
},
|
|
146
|
-
"description": "Enforce structured commit messages such as Conventional Commits.",
|
|
182
|
+
"description": "Enforce structured commit messages such as Conventional Commits via commit-msg hooks and CI. This is required for deterministic versioning and changelog generation.",
|
|
147
183
|
"id": "commit-linting",
|
|
148
184
|
"label": "Commit Linting",
|
|
149
185
|
"stack": {
|
|
186
|
+
"anyOfFiles": [
|
|
187
|
+
"commitlint.config.js",
|
|
188
|
+
"commitlint.config.cjs",
|
|
189
|
+
"commitlint.config.mjs",
|
|
190
|
+
"commitlint.config.json",
|
|
191
|
+
".cz.toml"
|
|
192
|
+
],
|
|
150
193
|
"exampleConfigFiles": [
|
|
151
194
|
"commitlint.config.js",
|
|
152
195
|
".cz.toml"
|
|
@@ -155,8 +198,11 @@
|
|
|
155
198
|
"commitlint",
|
|
156
199
|
"commitizen"
|
|
157
200
|
],
|
|
158
|
-
"notes": "Use commitlint with pre-commit hooks
|
|
159
|
-
"
|
|
201
|
+
"notes": "Use commitlint with commit-msg or pre-commit hooks plus a CI check. Conventional Commits keep goreleaser changelog generation deterministic.",
|
|
202
|
+
"requiredScripts": [
|
|
203
|
+
"commitlint"
|
|
204
|
+
],
|
|
205
|
+
"verification": "Test that non-conforming commit messages are rejected by the configured hooks and CI check."
|
|
160
206
|
}
|
|
161
207
|
},
|
|
162
208
|
{
|
|
@@ -265,7 +311,7 @@
|
|
|
265
311
|
"stage": "quality"
|
|
266
312
|
}
|
|
267
313
|
},
|
|
268
|
-
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
|
|
314
|
+
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code. For JS/TS stacks, require a TypeScript-first policy with strict mode and a CI typecheck step; allow JSDoc/checkJs migration for legacy JS.",
|
|
269
315
|
"id": "type-checking",
|
|
270
316
|
"label": "Type Checking",
|
|
271
317
|
"stack": {
|
|
@@ -313,6 +359,93 @@
|
|
|
313
359
|
"verification": "go.sum is present; run 'govulncheck ./...' to verify security scanning."
|
|
314
360
|
}
|
|
315
361
|
},
|
|
362
|
+
{
|
|
363
|
+
"ciHints": {
|
|
364
|
+
"azure-devops": {
|
|
365
|
+
"stage": "build"
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"description": "Ensure builds are reproducible by pinning dependencies, base images, and tool/runtime versions. Avoid network/time variance and fail when lockfiles drift.",
|
|
369
|
+
"id": "deterministic-builds",
|
|
370
|
+
"label": "Deterministic & Hermetic Builds",
|
|
371
|
+
"stack": {
|
|
372
|
+
"exampleConfigFiles": [
|
|
373
|
+
"go.sum",
|
|
374
|
+
"go.mod",
|
|
375
|
+
".go-version"
|
|
376
|
+
],
|
|
377
|
+
"exampleTools": [
|
|
378
|
+
"go env -w GOPROXY=off",
|
|
379
|
+
"go mod download"
|
|
380
|
+
],
|
|
381
|
+
"notes": "Use go.sum for deterministic module versions and pin Go versions (go.mod + .go-version). Avoid network variance by caching modules and pinning proxies.",
|
|
382
|
+
"optionalFiles": [
|
|
383
|
+
".go-version"
|
|
384
|
+
],
|
|
385
|
+
"requiredFiles": [
|
|
386
|
+
"go.sum"
|
|
387
|
+
],
|
|
388
|
+
"verification": "go.sum is present and builds use pinned Go versions; module downloads are cached."
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"ciHints": {
|
|
393
|
+
"azure-devops": {
|
|
394
|
+
"stage": "security"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"description": "Produce SBOMs or provenance metadata, enable secret/code scanning, and sign tags or commits for critical repos.",
|
|
398
|
+
"id": "provenance-security",
|
|
399
|
+
"label": "Provenance & Security Metadata",
|
|
400
|
+
"stack": {
|
|
401
|
+
"exampleConfigFiles": [
|
|
402
|
+
".github/workflows/codeql.yml",
|
|
403
|
+
".github/workflows/provenance.yml"
|
|
404
|
+
],
|
|
405
|
+
"exampleTools": [
|
|
406
|
+
"syft",
|
|
407
|
+
"cyclonedx-gomod",
|
|
408
|
+
"codeql",
|
|
409
|
+
"gitleaks",
|
|
410
|
+
"cosign"
|
|
411
|
+
],
|
|
412
|
+
"notes": "Generate SBOM/provenance for Go binaries and container artifacts, enable secret scanning, and sign tags/commits for critical repos.",
|
|
413
|
+
"optionalFiles": [
|
|
414
|
+
"SECURITY.md",
|
|
415
|
+
".github/workflows/codeql.yml"
|
|
416
|
+
],
|
|
417
|
+
"verification": "SBOM/provenance artifacts are published alongside releases, and CI runs secret/code scanning."
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"ciHints": {
|
|
422
|
+
"azure-devops": {
|
|
423
|
+
"stage": "ci"
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
"description": "Adopt standard CI templates and config samples to scale across repositories, minimizing bespoke pipeline logic.",
|
|
427
|
+
"id": "ci-templates-automation",
|
|
428
|
+
"label": "CI Templates & Automation",
|
|
429
|
+
"stack": {
|
|
430
|
+
"anyOfFiles": [
|
|
431
|
+
".github/workflows/ci.yml",
|
|
432
|
+
"azure-pipelines.yml"
|
|
433
|
+
],
|
|
434
|
+
"exampleConfigFiles": [
|
|
435
|
+
".github/workflows/ci.yml",
|
|
436
|
+
"azure-pipelines.yml"
|
|
437
|
+
],
|
|
438
|
+
"exampleTools": [
|
|
439
|
+
"GitHub Actions reusable workflows",
|
|
440
|
+
"Azure DevOps templates"
|
|
441
|
+
],
|
|
442
|
+
"notes": "Use shared CI templates for build/test/release stages to standardize across Go repos.",
|
|
443
|
+
"requiredScripts": [
|
|
444
|
+
"ci"
|
|
445
|
+
],
|
|
446
|
+
"verification": "CI pipeline references a shared template or reusable workflow and follows the standard job naming."
|
|
447
|
+
}
|
|
448
|
+
},
|
|
316
449
|
{
|
|
317
450
|
"ciHints": {
|
|
318
451
|
"azure-devops": {
|
|
@@ -657,5 +790,5 @@
|
|
|
657
790
|
},
|
|
658
791
|
"stack": "go",
|
|
659
792
|
"stackLabel": "Go",
|
|
660
|
-
"version":
|
|
793
|
+
"version": 3
|
|
661
794
|
}
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"job": "release"
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
|
-
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
|
|
124
|
+
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history. Maintain a single canonical version source (for example, package.json or VERSION) that all release artifacts use.",
|
|
125
125
|
"id": "semantic-versioning",
|
|
126
126
|
"label": "Semantic Versioning",
|
|
127
127
|
"stack": {
|
|
@@ -133,8 +133,44 @@
|
|
|
133
133
|
"goreleaser",
|
|
134
134
|
"semantic-release"
|
|
135
135
|
],
|
|
136
|
-
"notes": "Go uses git tags
|
|
137
|
-
"
|
|
136
|
+
"notes": "Go uses git tags (v1.2.3) as the canonical version source. Use goreleaser for automated releases with changelog generation and publish GitHub/Docker artifacts from the same tag.",
|
|
137
|
+
"optionalFiles": [
|
|
138
|
+
".goreleaser.yml",
|
|
139
|
+
"CHANGELOG.md"
|
|
140
|
+
],
|
|
141
|
+
"requiredScripts": [
|
|
142
|
+
"release"
|
|
143
|
+
],
|
|
144
|
+
"verification": "Check that git tags follow vMAJOR.MINOR.PATCH format and goreleaser or similar tooling generates releases and changelogs."
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"ciHints": {
|
|
149
|
+
"github-actions": {
|
|
150
|
+
"job": "release"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"description": "Use a single CI release pipeline that publishes all artifacts (GitHub releases, packages, containers) from the same canonical version source.",
|
|
154
|
+
"id": "unified-release-workflow",
|
|
155
|
+
"label": "Unified Release Workflow",
|
|
156
|
+
"stack": {
|
|
157
|
+
"exampleConfigFiles": [
|
|
158
|
+
".github/workflows/release.yml",
|
|
159
|
+
"azure-pipelines.yml"
|
|
160
|
+
],
|
|
161
|
+
"exampleTools": [
|
|
162
|
+
"goreleaser",
|
|
163
|
+
"docker buildx"
|
|
164
|
+
],
|
|
165
|
+
"notes": "Use a single release pipeline (goreleaser or equivalent) to publish GitHub releases and Docker images from the same git tag.",
|
|
166
|
+
"optionalFiles": [
|
|
167
|
+
".goreleaser.yml",
|
|
168
|
+
"CHANGELOG.md"
|
|
169
|
+
],
|
|
170
|
+
"requiredScripts": [
|
|
171
|
+
"release"
|
|
172
|
+
],
|
|
173
|
+
"verification": "Trigger the release pipeline and confirm all artifacts share the same version number and tag."
|
|
138
174
|
}
|
|
139
175
|
},
|
|
140
176
|
{
|
|
@@ -143,10 +179,17 @@
|
|
|
143
179
|
"job": "ci"
|
|
144
180
|
}
|
|
145
181
|
},
|
|
146
|
-
"description": "Enforce structured commit messages such as Conventional Commits.",
|
|
182
|
+
"description": "Enforce structured commit messages such as Conventional Commits via commit-msg hooks and CI. This is required for deterministic versioning and changelog generation.",
|
|
147
183
|
"id": "commit-linting",
|
|
148
184
|
"label": "Commit Linting",
|
|
149
185
|
"stack": {
|
|
186
|
+
"anyOfFiles": [
|
|
187
|
+
"commitlint.config.js",
|
|
188
|
+
"commitlint.config.cjs",
|
|
189
|
+
"commitlint.config.mjs",
|
|
190
|
+
"commitlint.config.json",
|
|
191
|
+
".cz.toml"
|
|
192
|
+
],
|
|
150
193
|
"exampleConfigFiles": [
|
|
151
194
|
"commitlint.config.js",
|
|
152
195
|
".cz.toml"
|
|
@@ -155,8 +198,11 @@
|
|
|
155
198
|
"commitlint",
|
|
156
199
|
"commitizen"
|
|
157
200
|
],
|
|
158
|
-
"notes": "Use commitlint with pre-commit hooks
|
|
159
|
-
"
|
|
201
|
+
"notes": "Use commitlint with commit-msg or pre-commit hooks plus a CI check. Conventional Commits keep goreleaser changelog generation deterministic.",
|
|
202
|
+
"requiredScripts": [
|
|
203
|
+
"commitlint"
|
|
204
|
+
],
|
|
205
|
+
"verification": "Test that non-conforming commit messages are rejected by the configured hooks and CI check."
|
|
160
206
|
}
|
|
161
207
|
},
|
|
162
208
|
{
|
|
@@ -265,7 +311,7 @@
|
|
|
265
311
|
"job": "ci"
|
|
266
312
|
}
|
|
267
313
|
},
|
|
268
|
-
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
|
|
314
|
+
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code. For JS/TS stacks, require a TypeScript-first policy with strict mode and a CI typecheck step; allow JSDoc/checkJs migration for legacy JS.",
|
|
269
315
|
"id": "type-checking",
|
|
270
316
|
"label": "Type Checking",
|
|
271
317
|
"stack": {
|
|
@@ -313,6 +359,93 @@
|
|
|
313
359
|
"verification": "go.sum is present; run 'govulncheck ./...' to verify security scanning."
|
|
314
360
|
}
|
|
315
361
|
},
|
|
362
|
+
{
|
|
363
|
+
"ciHints": {
|
|
364
|
+
"github-actions": {
|
|
365
|
+
"job": "ci"
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"description": "Ensure builds are reproducible by pinning dependencies, base images, and tool/runtime versions. Avoid network/time variance and fail when lockfiles drift.",
|
|
369
|
+
"id": "deterministic-builds",
|
|
370
|
+
"label": "Deterministic & Hermetic Builds",
|
|
371
|
+
"stack": {
|
|
372
|
+
"exampleConfigFiles": [
|
|
373
|
+
"go.sum",
|
|
374
|
+
"go.mod",
|
|
375
|
+
".go-version"
|
|
376
|
+
],
|
|
377
|
+
"exampleTools": [
|
|
378
|
+
"go env -w GOPROXY=off",
|
|
379
|
+
"go mod download"
|
|
380
|
+
],
|
|
381
|
+
"notes": "Use go.sum for deterministic module versions and pin Go versions (go.mod + .go-version). Avoid network variance by caching modules and pinning proxies.",
|
|
382
|
+
"optionalFiles": [
|
|
383
|
+
".go-version"
|
|
384
|
+
],
|
|
385
|
+
"requiredFiles": [
|
|
386
|
+
"go.sum"
|
|
387
|
+
],
|
|
388
|
+
"verification": "go.sum is present and builds use pinned Go versions; module downloads are cached."
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"ciHints": {
|
|
393
|
+
"github-actions": {
|
|
394
|
+
"job": "security"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"description": "Produce SBOMs or provenance metadata, enable secret/code scanning, and sign tags or commits for critical repos.",
|
|
398
|
+
"id": "provenance-security",
|
|
399
|
+
"label": "Provenance & Security Metadata",
|
|
400
|
+
"stack": {
|
|
401
|
+
"exampleConfigFiles": [
|
|
402
|
+
".github/workflows/codeql.yml",
|
|
403
|
+
".github/workflows/provenance.yml"
|
|
404
|
+
],
|
|
405
|
+
"exampleTools": [
|
|
406
|
+
"syft",
|
|
407
|
+
"cyclonedx-gomod",
|
|
408
|
+
"codeql",
|
|
409
|
+
"gitleaks",
|
|
410
|
+
"cosign"
|
|
411
|
+
],
|
|
412
|
+
"notes": "Generate SBOM/provenance for Go binaries and container artifacts, enable secret scanning, and sign tags/commits for critical repos.",
|
|
413
|
+
"optionalFiles": [
|
|
414
|
+
"SECURITY.md",
|
|
415
|
+
".github/workflows/codeql.yml"
|
|
416
|
+
],
|
|
417
|
+
"verification": "SBOM/provenance artifacts are published alongside releases, and CI runs secret/code scanning."
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"ciHints": {
|
|
422
|
+
"github-actions": {
|
|
423
|
+
"job": "ci"
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
"description": "Adopt standard CI templates and config samples to scale across repositories, minimizing bespoke pipeline logic.",
|
|
427
|
+
"id": "ci-templates-automation",
|
|
428
|
+
"label": "CI Templates & Automation",
|
|
429
|
+
"stack": {
|
|
430
|
+
"anyOfFiles": [
|
|
431
|
+
".github/workflows/ci.yml",
|
|
432
|
+
"azure-pipelines.yml"
|
|
433
|
+
],
|
|
434
|
+
"exampleConfigFiles": [
|
|
435
|
+
".github/workflows/ci.yml",
|
|
436
|
+
"azure-pipelines.yml"
|
|
437
|
+
],
|
|
438
|
+
"exampleTools": [
|
|
439
|
+
"GitHub Actions reusable workflows",
|
|
440
|
+
"Azure DevOps templates"
|
|
441
|
+
],
|
|
442
|
+
"notes": "Use shared CI templates for build/test/release stages to standardize across Go repos.",
|
|
443
|
+
"requiredScripts": [
|
|
444
|
+
"ci"
|
|
445
|
+
],
|
|
446
|
+
"verification": "CI pipeline references a shared template or reusable workflow and follows the standard job naming."
|
|
447
|
+
}
|
|
448
|
+
},
|
|
316
449
|
{
|
|
317
450
|
"ciHints": {
|
|
318
451
|
"github-actions": {
|
|
@@ -657,5 +790,5 @@
|
|
|
657
790
|
},
|
|
658
791
|
"stack": "go",
|
|
659
792
|
"stackLabel": "Go",
|
|
660
|
-
"version":
|
|
793
|
+
"version": 3
|
|
661
794
|
}
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"job": "release"
|
|
137
137
|
}
|
|
138
138
|
},
|
|
139
|
-
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
|
|
139
|
+
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history. Maintain a single canonical version source (for example, package.json or VERSION) that all release artifacts use.",
|
|
140
140
|
"id": "semantic-versioning",
|
|
141
141
|
"label": "Semantic Versioning",
|
|
142
142
|
"stack": {
|
|
@@ -148,8 +148,47 @@
|
|
|
148
148
|
"goreleaser",
|
|
149
149
|
"semantic-release"
|
|
150
150
|
],
|
|
151
|
-
"notes": "Go uses git tags
|
|
152
|
-
"
|
|
151
|
+
"notes": "Go uses git tags (v1.2.3) as the canonical version source. Use goreleaser for automated releases with changelog generation and publish GitHub/Docker artifacts from the same tag.",
|
|
152
|
+
"optionalFiles": [
|
|
153
|
+
".goreleaser.yml",
|
|
154
|
+
"CHANGELOG.md"
|
|
155
|
+
],
|
|
156
|
+
"requiredScripts": [
|
|
157
|
+
"release"
|
|
158
|
+
],
|
|
159
|
+
"verification": "Check that git tags follow vMAJOR.MINOR.PATCH format and goreleaser or similar tooling generates releases and changelogs."
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"ciHints": {
|
|
164
|
+
"azure-devops": {
|
|
165
|
+
"stage": "release"
|
|
166
|
+
},
|
|
167
|
+
"github-actions": {
|
|
168
|
+
"job": "release"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"description": "Use a single CI release pipeline that publishes all artifacts (GitHub releases, packages, containers) from the same canonical version source.",
|
|
172
|
+
"id": "unified-release-workflow",
|
|
173
|
+
"label": "Unified Release Workflow",
|
|
174
|
+
"stack": {
|
|
175
|
+
"exampleConfigFiles": [
|
|
176
|
+
".github/workflows/release.yml",
|
|
177
|
+
"azure-pipelines.yml"
|
|
178
|
+
],
|
|
179
|
+
"exampleTools": [
|
|
180
|
+
"goreleaser",
|
|
181
|
+
"docker buildx"
|
|
182
|
+
],
|
|
183
|
+
"notes": "Use a single release pipeline (goreleaser or equivalent) to publish GitHub releases and Docker images from the same git tag.",
|
|
184
|
+
"optionalFiles": [
|
|
185
|
+
".goreleaser.yml",
|
|
186
|
+
"CHANGELOG.md"
|
|
187
|
+
],
|
|
188
|
+
"requiredScripts": [
|
|
189
|
+
"release"
|
|
190
|
+
],
|
|
191
|
+
"verification": "Trigger the release pipeline and confirm all artifacts share the same version number and tag."
|
|
153
192
|
}
|
|
154
193
|
},
|
|
155
194
|
{
|
|
@@ -161,10 +200,17 @@
|
|
|
161
200
|
"job": "ci"
|
|
162
201
|
}
|
|
163
202
|
},
|
|
164
|
-
"description": "Enforce structured commit messages such as Conventional Commits.",
|
|
203
|
+
"description": "Enforce structured commit messages such as Conventional Commits via commit-msg hooks and CI. This is required for deterministic versioning and changelog generation.",
|
|
165
204
|
"id": "commit-linting",
|
|
166
205
|
"label": "Commit Linting",
|
|
167
206
|
"stack": {
|
|
207
|
+
"anyOfFiles": [
|
|
208
|
+
"commitlint.config.js",
|
|
209
|
+
"commitlint.config.cjs",
|
|
210
|
+
"commitlint.config.mjs",
|
|
211
|
+
"commitlint.config.json",
|
|
212
|
+
".cz.toml"
|
|
213
|
+
],
|
|
168
214
|
"exampleConfigFiles": [
|
|
169
215
|
"commitlint.config.js",
|
|
170
216
|
".cz.toml"
|
|
@@ -173,8 +219,11 @@
|
|
|
173
219
|
"commitlint",
|
|
174
220
|
"commitizen"
|
|
175
221
|
],
|
|
176
|
-
"notes": "Use commitlint with pre-commit hooks
|
|
177
|
-
"
|
|
222
|
+
"notes": "Use commitlint with commit-msg or pre-commit hooks plus a CI check. Conventional Commits keep goreleaser changelog generation deterministic.",
|
|
223
|
+
"requiredScripts": [
|
|
224
|
+
"commitlint"
|
|
225
|
+
],
|
|
226
|
+
"verification": "Test that non-conforming commit messages are rejected by the configured hooks and CI check."
|
|
178
227
|
}
|
|
179
228
|
},
|
|
180
229
|
{
|
|
@@ -298,7 +347,7 @@
|
|
|
298
347
|
"job": "ci"
|
|
299
348
|
}
|
|
300
349
|
},
|
|
301
|
-
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
|
|
350
|
+
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code. For JS/TS stacks, require a TypeScript-first policy with strict mode and a CI typecheck step; allow JSDoc/checkJs migration for legacy JS.",
|
|
302
351
|
"id": "type-checking",
|
|
303
352
|
"label": "Type Checking",
|
|
304
353
|
"stack": {
|
|
@@ -349,6 +398,102 @@
|
|
|
349
398
|
"verification": "go.sum is present; run 'govulncheck ./...' to verify security scanning."
|
|
350
399
|
}
|
|
351
400
|
},
|
|
401
|
+
{
|
|
402
|
+
"ciHints": {
|
|
403
|
+
"azure-devops": {
|
|
404
|
+
"stage": "build"
|
|
405
|
+
},
|
|
406
|
+
"github-actions": {
|
|
407
|
+
"job": "ci"
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"description": "Ensure builds are reproducible by pinning dependencies, base images, and tool/runtime versions. Avoid network/time variance and fail when lockfiles drift.",
|
|
411
|
+
"id": "deterministic-builds",
|
|
412
|
+
"label": "Deterministic & Hermetic Builds",
|
|
413
|
+
"stack": {
|
|
414
|
+
"exampleConfigFiles": [
|
|
415
|
+
"go.sum",
|
|
416
|
+
"go.mod",
|
|
417
|
+
".go-version"
|
|
418
|
+
],
|
|
419
|
+
"exampleTools": [
|
|
420
|
+
"go env -w GOPROXY=off",
|
|
421
|
+
"go mod download"
|
|
422
|
+
],
|
|
423
|
+
"notes": "Use go.sum for deterministic module versions and pin Go versions (go.mod + .go-version). Avoid network variance by caching modules and pinning proxies.",
|
|
424
|
+
"optionalFiles": [
|
|
425
|
+
".go-version"
|
|
426
|
+
],
|
|
427
|
+
"requiredFiles": [
|
|
428
|
+
"go.sum"
|
|
429
|
+
],
|
|
430
|
+
"verification": "go.sum is present and builds use pinned Go versions; module downloads are cached."
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"ciHints": {
|
|
435
|
+
"azure-devops": {
|
|
436
|
+
"stage": "security"
|
|
437
|
+
},
|
|
438
|
+
"github-actions": {
|
|
439
|
+
"job": "security"
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"description": "Produce SBOMs or provenance metadata, enable secret/code scanning, and sign tags or commits for critical repos.",
|
|
443
|
+
"id": "provenance-security",
|
|
444
|
+
"label": "Provenance & Security Metadata",
|
|
445
|
+
"stack": {
|
|
446
|
+
"exampleConfigFiles": [
|
|
447
|
+
".github/workflows/codeql.yml",
|
|
448
|
+
".github/workflows/provenance.yml"
|
|
449
|
+
],
|
|
450
|
+
"exampleTools": [
|
|
451
|
+
"syft",
|
|
452
|
+
"cyclonedx-gomod",
|
|
453
|
+
"codeql",
|
|
454
|
+
"gitleaks",
|
|
455
|
+
"cosign"
|
|
456
|
+
],
|
|
457
|
+
"notes": "Generate SBOM/provenance for Go binaries and container artifacts, enable secret scanning, and sign tags/commits for critical repos.",
|
|
458
|
+
"optionalFiles": [
|
|
459
|
+
"SECURITY.md",
|
|
460
|
+
".github/workflows/codeql.yml"
|
|
461
|
+
],
|
|
462
|
+
"verification": "SBOM/provenance artifacts are published alongside releases, and CI runs secret/code scanning."
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"ciHints": {
|
|
467
|
+
"azure-devops": {
|
|
468
|
+
"stage": "ci"
|
|
469
|
+
},
|
|
470
|
+
"github-actions": {
|
|
471
|
+
"job": "ci"
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
"description": "Adopt standard CI templates and config samples to scale across repositories, minimizing bespoke pipeline logic.",
|
|
475
|
+
"id": "ci-templates-automation",
|
|
476
|
+
"label": "CI Templates & Automation",
|
|
477
|
+
"stack": {
|
|
478
|
+
"anyOfFiles": [
|
|
479
|
+
".github/workflows/ci.yml",
|
|
480
|
+
"azure-pipelines.yml"
|
|
481
|
+
],
|
|
482
|
+
"exampleConfigFiles": [
|
|
483
|
+
".github/workflows/ci.yml",
|
|
484
|
+
"azure-pipelines.yml"
|
|
485
|
+
],
|
|
486
|
+
"exampleTools": [
|
|
487
|
+
"GitHub Actions reusable workflows",
|
|
488
|
+
"Azure DevOps templates"
|
|
489
|
+
],
|
|
490
|
+
"notes": "Use shared CI templates for build/test/release stages to standardize across Go repos.",
|
|
491
|
+
"requiredScripts": [
|
|
492
|
+
"ci"
|
|
493
|
+
],
|
|
494
|
+
"verification": "CI pipeline references a shared template or reusable workflow and follows the standard job naming."
|
|
495
|
+
}
|
|
496
|
+
},
|
|
352
497
|
{
|
|
353
498
|
"ciHints": {
|
|
354
499
|
"azure-devops": {
|
|
@@ -726,5 +871,5 @@
|
|
|
726
871
|
},
|
|
727
872
|
"stack": "go",
|
|
728
873
|
"stackLabel": "Go",
|
|
729
|
-
"version":
|
|
874
|
+
"version": 3
|
|
730
875
|
}
|