@intentius/chant-lexicon-gitlab 0.41.20 → 0.42.1
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/dist/integrity.json +2 -2
- package/dist/manifest.json +1 -1
- package/dist/okf/index.md +55 -0
- package/dist/okf/rules/WGL001.md +15 -0
- package/dist/okf/rules/WGL002.md +15 -0
- package/dist/okf/rules/WGL003.md +15 -0
- package/dist/okf/rules/WGL004.md +11 -0
- package/dist/okf/rules/WGL010.md +15 -0
- package/dist/okf/rules/WGL011.md +15 -0
- package/dist/okf/rules/WGL012.md +11 -0
- package/dist/okf/rules/WGL013.md +15 -0
- package/dist/okf/rules/WGL014.md +15 -0
- package/dist/okf/rules/WGL015.md +11 -0
- package/dist/okf/rules/WGL016.md +11 -0
- package/dist/okf/rules/WGL017.md +15 -0
- package/dist/okf/rules/WGL018.md +15 -0
- package/dist/okf/rules/WGL019.md +15 -0
- package/dist/okf/rules/WGL020.md +15 -0
- package/dist/okf/rules/WGL021.md +11 -0
- package/dist/okf/rules/WGL022.md +16 -0
- package/dist/okf/rules/WGL023.md +15 -0
- package/dist/okf/rules/WGL024.md +15 -0
- package/dist/okf/rules/WGL025.md +15 -0
- package/dist/okf/rules/WGL026.md +15 -0
- package/dist/okf/rules/WGL027.md +15 -0
- package/dist/okf/rules/WGL028.md +15 -0
- package/dist/okf/rules/WGL029.md +11 -0
- package/dist/okf/rules/WGL030.md +11 -0
- package/dist/okf/rules/WGL031.md +15 -0
- package/dist/okf/rules/WGL032.md +11 -0
- package/dist/okf/rules/WGL033.md +15 -0
- package/dist/okf/rules/WGL034.md +15 -0
- package/dist/okf/rules/WGL035.md +15 -0
- package/dist/okf/rules/WGL036.md +15 -0
- package/dist/okf/rules/WGL037.md +15 -0
- package/dist/okf/rules/WGL038.md +15 -0
- package/dist/okf/rules/WGL039.md +15 -0
- package/dist/okf/rules/WGL040.md +15 -0
- package/dist/okf/rules/WGL041.md +15 -0
- package/dist/okf/rules/WGL042.md +15 -0
- package/dist/okf/rules/WGL043.md +15 -0
- package/dist/okf/rules/WGL044.md +15 -0
- package/dist/okf/rules/WGL045.md +15 -0
- package/dist/okf/rules/WGL046.md +15 -0
- package/dist/okf/rules/WGL047.md +15 -0
- package/dist/okf/rules/WGL048.md +11 -0
- package/dist/okf/types/Default.md +29 -0
- package/dist/okf/types/Job.md +86 -0
- package/dist/okf/types/Workflow.md +15 -0
- package/package.json +3 -3
- package/src/package-cli.ts +2 -19
package/dist/integrity.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
4
|
+
"manifest.json": "bcd38257eca7fcbebfa718b63cacf476393cf71240a7726382207de45e6a907b",
|
|
5
5
|
"meta.json": "931fc3246a55645b1493080bbeb160e5d205e42349e8bdca96ca243adb5f0da3",
|
|
6
6
|
"types/index.d.ts": "5cd2e99f135a929b72bdd822d00d780d39b1cd407ba0cfb3d511c7ac9d667b58",
|
|
7
7
|
"rules/artifact-no-expiry.ts": "3f3cabf9792cbf8207e53a25f506715466b19ec25e9c3b4d0d77fed6b2eb4542",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"skills/chant-gitlab-migrate.md": "4853d04980560b379e5b0f7267dcb0a1e5d5879cb9e9931681ce76b2a5fe69d8",
|
|
53
53
|
"skills/chant-gitlab-patterns.md": "6d9a44e9e8de4c3820be9d65381b0d2ede4cb3626aaaf0011e21838a9fbf556e"
|
|
54
54
|
},
|
|
55
|
-
"composite": "
|
|
55
|
+
"composite": "5c97a16e2b070303abdd6b5ba92e1ff4f5a731a0d48d1d223c046d34d5ebb8a6"
|
|
56
56
|
}
|
package/dist/manifest.json
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
okf_version: '0.2'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Resource types
|
|
6
|
+
|
|
7
|
+
* [Default](/types/Default.md) - GitLab::CI::Default
|
|
8
|
+
* [Job](/types/Job.md) - GitLab::CI::Job
|
|
9
|
+
* [Workflow](/types/Workflow.md) - GitLab::CI::Workflow
|
|
10
|
+
|
|
11
|
+
# Rules
|
|
12
|
+
|
|
13
|
+
* [WGL001](/rules/WGL001.md) - Deprecated only/except keywords
|
|
14
|
+
* [WGL002](/rules/WGL002.md) - Missing script
|
|
15
|
+
* [WGL003](/rules/WGL003.md) - Missing stage
|
|
16
|
+
* [WGL004](/rules/WGL004.md) - Artifacts without expiry
|
|
17
|
+
* [WGL010](/rules/WGL010.md) - Job references a stage not in the stages list
|
|
18
|
+
* [WGL011](/rules/WGL011.md) - Job has rules that always evaluate to never (unreachable)
|
|
19
|
+
* [WGL012](/rules/WGL012.md) - Deprecated property usage — flags properties marked as deprecated in the GitLab CI schema
|
|
20
|
+
* [WGL013](/rules/WGL013.md) - Invalid needs: target — dangling reference or self-reference
|
|
21
|
+
* [WGL014](/rules/WGL014.md) - Invalid extends: target — references a template not in the pipeline
|
|
22
|
+
* [WGL015](/rules/WGL015.md) - Circular needs: chain — cycle in job dependency graph
|
|
23
|
+
* [WGL016](/rules/WGL016.md) - Secrets in variables — hardcoded passwords or tokens in variables blocks
|
|
24
|
+
* [WGL017](/rules/WGL017.md) - Insecure registry — Docker push/pull to non-HTTPS registry
|
|
25
|
+
* [WGL018](/rules/WGL018.md) - Missing timeout — jobs without explicit timeout may run too long
|
|
26
|
+
* [WGL019](/rules/WGL019.md) - Missing retry — deploy jobs without retry strategy
|
|
27
|
+
* [WGL020](/rules/WGL020.md) - Duplicate job names — multiple jobs resolving to same name
|
|
28
|
+
* [WGL021](/rules/WGL021.md) - Unused variables — global variables not referenced by any job
|
|
29
|
+
* [WGL022](/rules/WGL022.md) - Missing artifacts expiry — artifacts without expire_in cause disk bloat
|
|
30
|
+
* [WGL023](/rules/WGL023.md) - Overly broad rules — job with only when: always rule (no conditions)
|
|
31
|
+
* [WGL024](/rules/WGL024.md) - Manual without allow_failure — manual jobs block pipeline without allow_failure: true
|
|
32
|
+
* [WGL025](/rules/WGL025.md) - Missing cache key — cache without key causes collisions
|
|
33
|
+
* [WGL026](/rules/WGL026.md) - Privileged services without TLS — DinD services without DOCKER_TLS_CERTDIR
|
|
34
|
+
* [WGL027](/rules/WGL027.md) - Empty script — jobs with empty or blank script entries
|
|
35
|
+
* [WGL028](/rules/WGL028.md) - Redundant needs — needs listing jobs already implied by stage ordering
|
|
36
|
+
* [WGL029](/rules/WGL029.md) - include:project / component resolved by a moving ref instead of a pinned tag or SHA
|
|
37
|
+
* [WGL030](/rules/WGL030.md) - include:remote is insecure (HTTP) or mutable
|
|
38
|
+
* [WGL031](/rules/WGL031.md) - Container image not pinned to an immutable digest
|
|
39
|
+
* [WGL032](/rules/WGL032.md) - Include/component source resembles a well-known project (possible impersonation)
|
|
40
|
+
* [WGL033](/rules/WGL033.md) - OIDC id_token without a scoped audience
|
|
41
|
+
* [WGL034](/rules/WGL034.md) - OIDC id_token mintable from a merge-request pipeline
|
|
42
|
+
* [WGL035](/rules/WGL035.md) - Untrusted CI variable interpolated into a script command
|
|
43
|
+
* [WGL036](/rules/WGL036.md) - Privileged service / DinD reachable from merge-request pipelines
|
|
44
|
+
* [WGL037](/rules/WGL037.md) - Security gate on a regex match of an untrusted ref variable
|
|
45
|
+
* [WGL038](/rules/WGL038.md) - Secret-like variable reachable from a merge-request pipeline
|
|
46
|
+
* [WGL039](/rules/WGL039.md) - Secret-like variable printed to job logs
|
|
47
|
+
* [WGL040](/rules/WGL040.md) - Hardcoded credential in a registry login command
|
|
48
|
+
* [WGL041](/rules/WGL041.md) - Logically unsound (tautological) rules:if condition
|
|
49
|
+
* [WGL042](/rules/WGL042.md) - Unreachable rules after an unconditional match
|
|
50
|
+
* [WGL043](/rules/WGL043.md) - Match-anything regex gate in rules:if
|
|
51
|
+
* [WGL044](/rules/WGL044.md) - Public artifacts expose build output
|
|
52
|
+
* [WGL045](/rules/WGL045.md) - Artifact path that may capture a credential file
|
|
53
|
+
* [WGL046](/rules/WGL046.md) - Cache populated in a merge-request pipeline (poisoning risk)
|
|
54
|
+
* [WGL047](/rules/WGL047.md) - Software fetched and piped to a shell without verification
|
|
55
|
+
* [WGL048](/rules/WGL048.md) - Pipeline defines workflow: but no workflow:name
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: WGL001
|
|
4
|
+
description: Deprecated only/except keywords
|
|
5
|
+
id: WGL001
|
|
6
|
+
severity: warning
|
|
7
|
+
category: style
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Deprecated only/except keywords
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: WGL002
|
|
4
|
+
description: Missing script
|
|
5
|
+
id: WGL002
|
|
6
|
+
severity: error
|
|
7
|
+
category: correctness
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Missing script
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: WGL003
|
|
4
|
+
description: Missing stage
|
|
5
|
+
id: WGL003
|
|
6
|
+
severity: info
|
|
7
|
+
category: style
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Missing stage
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL010
|
|
4
|
+
description: Job references a stage not in the stages list
|
|
5
|
+
id: WGL010
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Job references a stage not in the stages list
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL011
|
|
4
|
+
description: Job has rules that always evaluate to never (unreachable)
|
|
5
|
+
id: WGL011
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Job has rules that always evaluate to never (unreachable)
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL012
|
|
4
|
+
description: Deprecated property usage — flags properties marked as deprecated in the GitLab CI schema
|
|
5
|
+
id: WGL012
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Deprecated property usage — flags properties marked as deprecated in the GitLab CI schema
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL013
|
|
4
|
+
description: 'Invalid needs: target — dangling reference or self-reference'
|
|
5
|
+
id: WGL013
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Invalid needs: target — dangling reference or self-reference
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL014
|
|
4
|
+
description: 'Invalid extends: target — references a template not in the pipeline'
|
|
5
|
+
id: WGL014
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Invalid extends: target — references a template not in the pipeline
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL015
|
|
4
|
+
description: 'Circular needs: chain — cycle in job dependency graph'
|
|
5
|
+
id: WGL015
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Circular needs: chain — cycle in job dependency graph
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL016
|
|
4
|
+
description: Secrets in variables — hardcoded passwords or tokens in variables blocks
|
|
5
|
+
id: WGL016
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Secrets in variables — hardcoded passwords or tokens in variables blocks
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL017
|
|
4
|
+
description: Insecure registry — Docker push/pull to non-HTTPS registry
|
|
5
|
+
id: WGL017
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Insecure registry — Docker push/pull to non-HTTPS registry
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL018
|
|
4
|
+
description: Missing timeout — jobs without explicit timeout may run too long
|
|
5
|
+
id: WGL018
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Missing timeout — jobs without explicit timeout may run too long
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL019
|
|
4
|
+
description: Missing retry — deploy jobs without retry strategy
|
|
5
|
+
id: WGL019
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Missing retry — deploy jobs without retry strategy
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL020
|
|
4
|
+
description: Duplicate job names — multiple jobs resolving to same name
|
|
5
|
+
id: WGL020
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Duplicate job names — multiple jobs resolving to same name
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL021
|
|
4
|
+
description: Unused variables — global variables not referenced by any job
|
|
5
|
+
id: WGL021
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Unused variables — global variables not referenced by any job
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL022
|
|
4
|
+
description: Missing artifacts expiry — artifacts without expire_in cause disk bloat
|
|
5
|
+
id: WGL022
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Missing artifacts expiry — artifacts without expire_in cause disk bloat
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Default](/types/Default.md)
|
|
16
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL023
|
|
4
|
+
description: 'Overly broad rules — job with only when: always rule (no conditions)'
|
|
5
|
+
id: WGL023
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Overly broad rules — job with only when: always rule (no conditions)
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL024
|
|
4
|
+
description: 'Manual without allow_failure — manual jobs block pipeline without allow_failure: true'
|
|
5
|
+
id: WGL024
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Manual without allow_failure — manual jobs block pipeline without allow_failure: true
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL025
|
|
4
|
+
description: Missing cache key — cache without key causes collisions
|
|
5
|
+
id: WGL025
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Missing cache key — cache without key causes collisions
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL026
|
|
4
|
+
description: Privileged services without TLS — DinD services without DOCKER_TLS_CERTDIR
|
|
5
|
+
id: WGL026
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Privileged services without TLS — DinD services without DOCKER_TLS_CERTDIR
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL027
|
|
4
|
+
description: Empty script — jobs with empty or blank script entries
|
|
5
|
+
id: WGL027
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Empty script — jobs with empty or blank script entries
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL028
|
|
4
|
+
description: Redundant needs — needs listing jobs already implied by stage ordering
|
|
5
|
+
id: WGL028
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Redundant needs — needs listing jobs already implied by stage ordering
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL029
|
|
4
|
+
description: include:project / component resolved by a moving ref instead of a pinned tag or SHA
|
|
5
|
+
id: WGL029
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
include:project / component resolved by a moving ref instead of a pinned tag or SHA
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL030
|
|
4
|
+
description: include:remote is insecure (HTTP) or mutable
|
|
5
|
+
id: WGL030
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
include:remote is insecure (HTTP) or mutable
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL031
|
|
4
|
+
description: Container image not pinned to an immutable digest
|
|
5
|
+
id: WGL031
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Container image not pinned to an immutable digest
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL032
|
|
4
|
+
description: Include/component source resembles a well-known project (possible impersonation)
|
|
5
|
+
id: WGL032
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Include/component source resembles a well-known project (possible impersonation)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL033
|
|
4
|
+
description: OIDC id_token without a scoped audience
|
|
5
|
+
id: WGL033
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
OIDC id_token without a scoped audience
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL034
|
|
4
|
+
description: OIDC id_token mintable from a merge-request pipeline
|
|
5
|
+
id: WGL034
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
OIDC id_token mintable from a merge-request pipeline
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL035
|
|
4
|
+
description: Untrusted CI variable interpolated into a script command
|
|
5
|
+
id: WGL035
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Untrusted CI variable interpolated into a script command
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL036
|
|
4
|
+
description: Privileged service / DinD reachable from merge-request pipelines
|
|
5
|
+
id: WGL036
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Privileged service / DinD reachable from merge-request pipelines
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL037
|
|
4
|
+
description: Security gate on a regex match of an untrusted ref variable
|
|
5
|
+
id: WGL037
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Security gate on a regex match of an untrusted ref variable
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL038
|
|
4
|
+
description: Secret-like variable reachable from a merge-request pipeline
|
|
5
|
+
id: WGL038
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Secret-like variable reachable from a merge-request pipeline
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL039
|
|
4
|
+
description: Secret-like variable printed to job logs
|
|
5
|
+
id: WGL039
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Secret-like variable printed to job logs
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL040
|
|
4
|
+
description: Hardcoded credential in a registry login command
|
|
5
|
+
id: WGL040
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Hardcoded credential in a registry login command
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL041
|
|
4
|
+
description: Logically unsound (tautological) rules:if condition
|
|
5
|
+
id: WGL041
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Logically unsound (tautological) rules:if condition
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL042
|
|
4
|
+
description: Unreachable rules after an unconditional match
|
|
5
|
+
id: WGL042
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Unreachable rules after an unconditional match
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL043
|
|
4
|
+
description: Match-anything regex gate in rules:if
|
|
5
|
+
id: WGL043
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Match-anything regex gate in rules:if
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL044
|
|
4
|
+
description: Public artifacts expose build output
|
|
5
|
+
id: WGL044
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Public artifacts expose build output
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL045
|
|
4
|
+
description: Artifact path that may capture a credential file
|
|
5
|
+
id: WGL045
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Artifact path that may capture a credential file
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL046
|
|
4
|
+
description: Cache populated in a merge-request pipeline (poisoning risk)
|
|
5
|
+
id: WGL046
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Cache populated in a merge-request pipeline (poisoning risk)
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL047
|
|
4
|
+
description: Software fetched and piped to a shell without verification
|
|
5
|
+
id: WGL047
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Software fetched and piped to a shell without verification
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Job](/types/Job.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WGL048
|
|
4
|
+
description: 'Pipeline defines workflow: but no workflow:name'
|
|
5
|
+
id: WGL048
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: gitlab
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/gitlab/rules/
|
|
10
|
+
---
|
|
11
|
+
Pipeline defines workflow: but no workflow:name
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Default
|
|
4
|
+
description: gitlab resource type GitLab::CI::Default
|
|
5
|
+
name: Default
|
|
6
|
+
lexicon: gitlab
|
|
7
|
+
resource_type: GitLab::CI::Default
|
|
8
|
+
---
|
|
9
|
+
`GitLab::CI::Default`, a resource type of the gitlab lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `after_script` (`string | string[]`, optional)
|
|
14
|
+
- `artifacts` (`Artifacts`, optional)
|
|
15
|
+
- `before_script` (`string | string[]`, optional)
|
|
16
|
+
- `cache` (`Cache | Cache[]`, optional)
|
|
17
|
+
- `hooks` (`Record<string, unknown>`, optional)
|
|
18
|
+
- `id_tokens` (`Record<string, { aud: string | string[] }>`, optional)
|
|
19
|
+
- `identity` (`"google_cloud"`, optional)
|
|
20
|
+
- `image` (`Image`, optional)
|
|
21
|
+
- `interruptible` (`boolean`, optional)
|
|
22
|
+
- `retry` (`Retry | number`, optional)
|
|
23
|
+
- `services` (`Service[]`, optional)
|
|
24
|
+
- `tags` (`any[]`, optional)
|
|
25
|
+
- `timeout` (`string`, optional)
|
|
26
|
+
|
|
27
|
+
## Governed by
|
|
28
|
+
|
|
29
|
+
- [WGL022](/rules/WGL022.md): Missing artifacts expiry — artifacts without expire_in cause disk bloat
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Job
|
|
4
|
+
description: gitlab resource type GitLab::CI::Job
|
|
5
|
+
name: Job
|
|
6
|
+
lexicon: gitlab
|
|
7
|
+
resource_type: GitLab::CI::Job
|
|
8
|
+
---
|
|
9
|
+
`GitLab::CI::Job`, a resource type of the gitlab lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `after_script` (`string | string[]`, optional)
|
|
14
|
+
- `allow_failure` (`AllowFailure | boolean`, optional)
|
|
15
|
+
- `artifacts` (`Artifacts`, optional)
|
|
16
|
+
- `before_script` (`string | string[]`, optional)
|
|
17
|
+
- `cache` (`Cache | Cache[]`, optional)
|
|
18
|
+
- `coverage` (`string`, optional): Must be a regular expression, optionally but recommended to be quoted, and must be surrounded with '/'. Example: '/Code coverage: \d+\.\d+/'
|
|
19
|
+
- `dependencies` (`string[]`, optional): Specify a list of job names from earlier stages from which artifacts should be loaded. By default, all previous artifacts are passed. Use an empty array to skip downloading artifacts.
|
|
20
|
+
- `environment` (`Environment | string`, optional): Used to associate environment metadata with a deploy. Environment can have a name and URL attached to it, and will be displayed under /environments under the project.
|
|
21
|
+
- `except` (`any`, optional): Job will run *except* for when these filtering options match.
|
|
22
|
+
- `extends` (`string | string[]`, optional): The name of one or more jobs to inherit configuration from.
|
|
23
|
+
- `hooks` (`Record<string, unknown>`, optional)
|
|
24
|
+
- `id_tokens` (`Record<string, { aud: string | string[] }>`, optional)
|
|
25
|
+
- `identity` (`"google_cloud"`, optional)
|
|
26
|
+
- `image` (`Image`, optional)
|
|
27
|
+
- `inherit` (`Inherit`, optional)
|
|
28
|
+
- `interruptible` (`boolean`, optional)
|
|
29
|
+
- `manual_confirmation` (`string`, optional)
|
|
30
|
+
- `needs` (`Need[]`, optional): The list of jobs in previous stages whose sole completion is needed to start the current job.
|
|
31
|
+
- `only` (`any`, optional): Job will run *only* when these filtering options match.
|
|
32
|
+
- `pages` (`Record<string, any> | boolean`, optional)
|
|
33
|
+
- `parallel` (`Parallel | number`, optional)
|
|
34
|
+
- `publish` (`string`, optional): A path to a directory that contains the files to be published with Pages
|
|
35
|
+
- `release` (`Release`, optional): Indicates that the job creates a Release.
|
|
36
|
+
- `resource_group` (`string`, optional): Limit job concurrency. Can be used to ensure that the Runner will not run certain jobs simultaneously.
|
|
37
|
+
- `retry` (`Retry | number`, optional)
|
|
38
|
+
- `rules` (`Rule[]`, optional)
|
|
39
|
+
- `run` (`any[]`, optional)
|
|
40
|
+
- `script` (`string | string[]`, optional)
|
|
41
|
+
- `secrets` (`Record<string, unknown>`, optional)
|
|
42
|
+
- `services` (`Service[]`, optional)
|
|
43
|
+
- `stage` (`string | string[]`, optional): Define what stage the job will run in.
|
|
44
|
+
- `start_in` (`string`, optional)
|
|
45
|
+
- `tags` (`any[]`, optional)
|
|
46
|
+
- `timeout` (`string`, optional)
|
|
47
|
+
- `trigger` (`Trigger | string`, optional)
|
|
48
|
+
- `variables` (`Record<string, unknown>`, optional)
|
|
49
|
+
- `when` (`"on_success" | "on_failure" | "always" | "never" | "manual" | "delayed"`, optional)
|
|
50
|
+
|
|
51
|
+
## Governed by
|
|
52
|
+
|
|
53
|
+
- [WGL001](/rules/WGL001.md): Deprecated only/except keywords
|
|
54
|
+
- [WGL002](/rules/WGL002.md): Missing script
|
|
55
|
+
- [WGL003](/rules/WGL003.md): Missing stage
|
|
56
|
+
- [WGL010](/rules/WGL010.md): Job references a stage not in the stages list
|
|
57
|
+
- [WGL011](/rules/WGL011.md): Job has rules that always evaluate to never (unreachable)
|
|
58
|
+
- [WGL013](/rules/WGL013.md): Invalid needs: target — dangling reference or self-reference
|
|
59
|
+
- [WGL014](/rules/WGL014.md): Invalid extends: target — references a template not in the pipeline
|
|
60
|
+
- [WGL017](/rules/WGL017.md): Insecure registry — Docker push/pull to non-HTTPS registry
|
|
61
|
+
- [WGL018](/rules/WGL018.md): Missing timeout — jobs without explicit timeout may run too long
|
|
62
|
+
- [WGL019](/rules/WGL019.md): Missing retry — deploy jobs without retry strategy
|
|
63
|
+
- [WGL020](/rules/WGL020.md): Duplicate job names — multiple jobs resolving to same name
|
|
64
|
+
- [WGL022](/rules/WGL022.md): Missing artifacts expiry — artifacts without expire_in cause disk bloat
|
|
65
|
+
- [WGL023](/rules/WGL023.md): Overly broad rules — job with only when: always rule (no conditions)
|
|
66
|
+
- [WGL024](/rules/WGL024.md): Manual without allow_failure — manual jobs block pipeline without allow_failure: true
|
|
67
|
+
- [WGL025](/rules/WGL025.md): Missing cache key — cache without key causes collisions
|
|
68
|
+
- [WGL026](/rules/WGL026.md): Privileged services without TLS — DinD services without DOCKER_TLS_CERTDIR
|
|
69
|
+
- [WGL027](/rules/WGL027.md): Empty script — jobs with empty or blank script entries
|
|
70
|
+
- [WGL028](/rules/WGL028.md): Redundant needs — needs listing jobs already implied by stage ordering
|
|
71
|
+
- [WGL031](/rules/WGL031.md): Container image not pinned to an immutable digest
|
|
72
|
+
- [WGL033](/rules/WGL033.md): OIDC id_token without a scoped audience
|
|
73
|
+
- [WGL034](/rules/WGL034.md): OIDC id_token mintable from a merge-request pipeline
|
|
74
|
+
- [WGL035](/rules/WGL035.md): Untrusted CI variable interpolated into a script command
|
|
75
|
+
- [WGL036](/rules/WGL036.md): Privileged service / DinD reachable from merge-request pipelines
|
|
76
|
+
- [WGL037](/rules/WGL037.md): Security gate on a regex match of an untrusted ref variable
|
|
77
|
+
- [WGL038](/rules/WGL038.md): Secret-like variable reachable from a merge-request pipeline
|
|
78
|
+
- [WGL039](/rules/WGL039.md): Secret-like variable printed to job logs
|
|
79
|
+
- [WGL040](/rules/WGL040.md): Hardcoded credential in a registry login command
|
|
80
|
+
- [WGL041](/rules/WGL041.md): Logically unsound (tautological) rules:if condition
|
|
81
|
+
- [WGL042](/rules/WGL042.md): Unreachable rules after an unconditional match
|
|
82
|
+
- [WGL043](/rules/WGL043.md): Match-anything regex gate in rules:if
|
|
83
|
+
- [WGL044](/rules/WGL044.md): Public artifacts expose build output
|
|
84
|
+
- [WGL045](/rules/WGL045.md): Artifact path that may capture a credential file
|
|
85
|
+
- [WGL046](/rules/WGL046.md): Cache populated in a merge-request pipeline (poisoning risk)
|
|
86
|
+
- [WGL047](/rules/WGL047.md): Software fetched and piped to a shell without verification
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Workflow
|
|
4
|
+
description: gitlab resource type GitLab::CI::Workflow
|
|
5
|
+
name: Workflow
|
|
6
|
+
lexicon: gitlab
|
|
7
|
+
resource_type: GitLab::CI::Workflow
|
|
8
|
+
---
|
|
9
|
+
`GitLab::CI::Workflow`, a resource type of the gitlab lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `auto_cancel` (`AutoCancel`, optional)
|
|
14
|
+
- `name` (`string`, optional)
|
|
15
|
+
- `rules` (`WorkflowRule[]`, optional)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant-lexicon-gitlab",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.1",
|
|
4
4
|
"description": "GitLab CI lexicon for chant — declarative IaC in TypeScript",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"typescript": "^5.9.3"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"@intentius/chant": "^0.
|
|
71
|
-
"@intentius/chant-lexicon-github": "^0.
|
|
70
|
+
"@intentius/chant": "^0.42.1",
|
|
71
|
+
"@intentius/chant-lexicon-github": "^0.42.1",
|
|
72
72
|
"typescript": "^5.9.3"
|
|
73
73
|
},
|
|
74
74
|
"peerDependenciesMeta": {
|
package/src/package-cli.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { generate, writeGeneratedFiles } from "./codegen/generate";
|
|
7
7
|
import { packageLexicon } from "./codegen/package";
|
|
8
|
-
import {
|
|
8
|
+
import { writeBundleSpec } from "@intentius/chant/codegen/package";
|
|
9
9
|
import { join, dirname } from "path";
|
|
10
10
|
import { fileURLToPath } from "url";
|
|
11
11
|
|
|
@@ -20,24 +20,7 @@ console.error(`Generated ${genResult.resources} entities, ${genResult.properties
|
|
|
20
20
|
const { spec, stats } = await packageLexicon({ verbose: true });
|
|
21
21
|
|
|
22
22
|
const distDir = join(pkgDir, "dist");
|
|
23
|
-
|
|
24
|
-
mkdirSync(join(distDir, "rules"), { recursive: true });
|
|
25
|
-
mkdirSync(join(distDir, "skills"), { recursive: true });
|
|
26
|
-
|
|
27
|
-
writeFileSync(join(distDir, "manifest.json"), JSON.stringify(spec.manifest, null, 2));
|
|
28
|
-
writeFileSync(join(distDir, "meta.json"), spec.registry);
|
|
29
|
-
writeFileSync(join(distDir, "types", "index.d.ts"), spec.typesDTS);
|
|
30
|
-
|
|
31
|
-
for (const [name, content] of spec.rules) {
|
|
32
|
-
writeFileSync(join(distDir, "rules", name), content);
|
|
33
|
-
}
|
|
34
|
-
for (const [name, content] of spec.skills) {
|
|
35
|
-
writeFileSync(join(distDir, "skills", name), content);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (spec.integrity) {
|
|
39
|
-
writeFileSync(join(distDir, "integrity.json"), JSON.stringify(spec.integrity, null, 2));
|
|
40
|
-
}
|
|
23
|
+
writeBundleSpec(spec, distDir);
|
|
41
24
|
|
|
42
25
|
console.error(`Packaged ${stats.resources} entities, ${stats.ruleCount} rules, ${stats.skillCount} skills`);
|
|
43
26
|
console.error(`dist/ written to ${distDir}`);
|