Skip to content

Commit 74e54fc

Browse files
feat: add include-mode lint inputs for super-linter (#85)
This PR adds reusable workflow inputs for VALIDATE_KUBERNETES_KUBEVAL, VALIDATE_GITHUB_ACTIONS, VALIDATE_CHECKOV, and VALIDATE_GITLEAKS. It introduces include/exclude mode handling to avoid super-linter include/exclude conflicts and updates the README with usage examples.
2 parents 493ba46 + 5d3a43c commit 74e54fc

3 files changed

Lines changed: 227 additions & 4 deletions

File tree

.github/workflows/super-linter-non-slim.yml

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,54 @@ on:
3030
"Will parse the entire repository and find all files to validate
3131
across all types. NOTE: When set to false, only new or edited files
3232
will be parsed for validation."
33+
VALIDATE_KUBERNETES_KUBEVAL:
34+
required: false
35+
type: boolean
36+
default: false
37+
description: >
38+
"Enable kubeval validation for Kubernetes manifests."
39+
VALIDATE_GITHUB_ACTIONS:
40+
required: false
41+
type: boolean
42+
default: false
43+
description: >
44+
"Enable GitHub Actions validation."
45+
VALIDATE_CHECKOV:
46+
required: false
47+
type: boolean
48+
default: false
49+
description: >
50+
"Enable Checkov validation."
51+
VALIDATE_GITLEAKS:
52+
required: false
53+
type: boolean
54+
default: false
55+
description: >
56+
"Enable Gitleaks validation."
57+
VALIDATE_MARKDOWN:
58+
required: false
59+
type: boolean
60+
default: false
61+
description: >
62+
"Enable Markdown validation in include mode."
63+
VALIDATE_YAML:
64+
required: false
65+
type: boolean
66+
default: false
67+
description: >
68+
"Enable YAML validation in include mode."
69+
VALIDATE_MARKDOWN_PRETTIER:
70+
required: false
71+
type: boolean
72+
default: false
73+
description: >
74+
"Enable Markdown Prettier validation."
75+
VALIDATE_YAML_PRETTIER:
76+
required: false
77+
type: boolean
78+
default: false
79+
description: >
80+
"Enable YAML Prettier validation."
3381
3482
jobs:
3583
build:
@@ -48,7 +96,34 @@ jobs:
4896
path: ${{ inputs.CODEQUALITY_PATH }}
4997
ref: ${{ inputs.CODEQUALITY_REF }}
5098

51-
- name: Lint Code Base
99+
- name: Lint Code Base (include mode)
100+
if: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER }}
101+
uses: github/super-linter@v7
102+
env:
103+
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml
104+
ANSIBLE_DIRECTORY: ${{ inputs.ANSIBLE_DIRECTORY }}
105+
CHECKOV_FILE_NAME: checkov/.checkov.yaml
106+
DEFAULT_BRANCH: main
107+
GITHUB_TOKEN: ${{ github.token }}
108+
JAVA_FILE_NAME: java/checkstyle/checkstyle.xml
109+
KUBERNETES_KUBEVAL_OPTIONS: --ignore-missing-schemas
110+
LINTER_RULES_PATH: "${{ inputs.CODEQUALITY_PATH }}/"
111+
MARKDOWN_CONFIG_FILE: markdown/.markdown-lint.yml
112+
VALIDATE_ALL_CODEBASE: "${{ inputs.VALIDATE_ALL_CODEBASE }}"
113+
VALIDATE_MARKDOWN: ${{ inputs.VALIDATE_MARKDOWN && 'true' || '' }}
114+
VALIDATE_YAML: ${{ inputs.VALIDATE_YAML && 'true' || '' }}
115+
VALIDATE_KUBERNETES_KUBEVAL: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL && 'true' || '' }}
116+
VALIDATE_GITHUB_ACTIONS: ${{ inputs.VALIDATE_GITHUB_ACTIONS && 'true' || '' }}
117+
VALIDATE_CHECKOV: ${{ inputs.VALIDATE_CHECKOV && 'true' || '' }}
118+
VALIDATE_GITLEAKS: ${{ inputs.VALIDATE_GITLEAKS && 'true' || '' }}
119+
VALIDATE_MARKDOWN_PRETTIER: ${{ inputs.VALIDATE_MARKDOWN_PRETTIER && 'true' || '' }}
120+
VALIDATE_YAML_PRETTIER: ${{ inputs.VALIDATE_YAML_PRETTIER && 'true' || '' }}
121+
YAML_CONFIG_FILE: yaml/.yaml-lint.yml
122+
TERRAFORM_TFLINT_CONFIG_FILE: terraform/.tflint.hcl
123+
SQLFLUFF_CONFIG_FILE: sqlfluff/.sqlfluff-lint
124+
125+
- name: Lint Code Base (exclude mode)
126+
if: ${{ !(inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER) }}
52127
uses: github/super-linter@v7
53128
env:
54129
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml

.github/workflows/super-linter.yml

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,54 @@ on:
3939
"Will parse the entire repository and find all files to validate
4040
across all types. NOTE: When set to false, only new or edited files
4141
will be parsed for validation."
42+
VALIDATE_KUBERNETES_KUBEVAL:
43+
required: false
44+
type: boolean
45+
default: false
46+
description: >
47+
"Enable kubeval validation for Kubernetes manifests."
48+
VALIDATE_GITHUB_ACTIONS:
49+
required: false
50+
type: boolean
51+
default: false
52+
description: >
53+
"Enable GitHub Actions validation."
54+
VALIDATE_CHECKOV:
55+
required: false
56+
type: boolean
57+
default: false
58+
description: >
59+
"Enable Checkov validation."
60+
VALIDATE_GITLEAKS:
61+
required: false
62+
type: boolean
63+
default: false
64+
description: >
65+
"Enable Gitleaks validation."
66+
VALIDATE_MARKDOWN:
67+
required: false
68+
type: boolean
69+
default: false
70+
description: >
71+
"Enable Markdown validation in include mode."
72+
VALIDATE_YAML:
73+
required: false
74+
type: boolean
75+
default: false
76+
description: >
77+
"Enable YAML validation in include mode."
78+
VALIDATE_MARKDOWN_PRETTIER:
79+
required: false
80+
type: boolean
81+
default: false
82+
description: >
83+
"Enable Markdown Prettier validation."
84+
VALIDATE_YAML_PRETTIER:
85+
required: false
86+
type: boolean
87+
default: false
88+
description: >
89+
"Enable YAML Prettier validation."
4290
4391
jobs:
4492
build:
@@ -60,7 +108,35 @@ jobs:
60108
- name: Configure git for private modules
61109
run: git config --global url."https://${{ github.token }}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
62110

63-
- name: Lint Code Base
111+
- name: Lint Code Base (include mode)
112+
if: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER }}
113+
uses: github/super-linter/slim@v7
114+
env:
115+
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml
116+
ANSIBLE_DIRECTORY: ${{ inputs.ANSIBLE_DIRECTORY }}
117+
CHECKOV_FILE_NAME: checkov/.checkov.yaml
118+
DEFAULT_BRANCH: main
119+
FILTER_REGEX_EXCLUDE: "${{ inputs.FILTER_REGEX_EXCLUDE }}"
120+
GITHUB_TOKEN: ${{ github.token }}
121+
JAVA_FILE_NAME: java/checkstyle/checkstyle.xml
122+
KUBERNETES_KUBEVAL_OPTIONS: --ignore-missing-schemas
123+
LINTER_RULES_PATH: "${{ inputs.CODEQUALITY_PATH }}/"
124+
MARKDOWN_CONFIG_FILE: markdown/.markdown-lint.yml
125+
VALIDATE_ALL_CODEBASE: "${{ inputs.VALIDATE_ALL_CODEBASE }}"
126+
VALIDATE_MARKDOWN: ${{ inputs.VALIDATE_MARKDOWN && 'true' || '' }}
127+
VALIDATE_YAML: ${{ inputs.VALIDATE_YAML && 'true' || '' }}
128+
VALIDATE_KUBERNETES_KUBEVAL: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL && 'true' || '' }}
129+
VALIDATE_GITHUB_ACTIONS: ${{ inputs.VALIDATE_GITHUB_ACTIONS && 'true' || '' }}
130+
VALIDATE_CHECKOV: ${{ inputs.VALIDATE_CHECKOV && 'true' || '' }}
131+
VALIDATE_GITLEAKS: ${{ inputs.VALIDATE_GITLEAKS && 'true' || '' }}
132+
VALIDATE_MARKDOWN_PRETTIER: ${{ inputs.VALIDATE_MARKDOWN_PRETTIER && 'true' || '' }}
133+
VALIDATE_YAML_PRETTIER: ${{ inputs.VALIDATE_YAML_PRETTIER && 'true' || '' }}
134+
YAML_CONFIG_FILE: yaml/.yaml-lint.yml
135+
TERRAFORM_TFLINT_CONFIG_FILE: terraform/.tflint.hcl
136+
SQLFLUFF_CONFIG_FILE: sqlfluff/.sqlfluff-lint
137+
138+
- name: Lint Code Base (exclude mode)
139+
if: ${{ !(inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER) }}
64140
uses: github/super-linter/slim@v7
65141
env:
66142
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml

README.md

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,80 @@ Use this workflow if your repository consists of multiple file formats (e.g. Jav
99
Add a new workflow file like [this one](.github/workflows/lint.yml) or add the following lines to a existing workflow:
1010

1111
```yaml
12-
call-lint-workflow:
13-
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
12+
call-lint-workflow:
13+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
14+
```
15+
16+
Optional input to enable kubeval for Kubernetes manifests:
17+
18+
```yaml
19+
call-lint-workflow:
20+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
21+
with:
22+
VALIDATE_KUBERNETES_KUBEVAL: true
23+
```
24+
25+
Optional input to enable GitHub Actions validation:
26+
27+
```yaml
28+
call-lint-workflow:
29+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
30+
with:
31+
VALIDATE_GITHUB_ACTIONS: true
32+
```
33+
34+
Optional input to enable Checkov validation:
35+
36+
```yaml
37+
call-lint-workflow:
38+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
39+
with:
40+
VALIDATE_CHECKOV: true
41+
```
42+
43+
Optional input to enable Gitleaks validation:
44+
45+
```yaml
46+
call-lint-workflow:
47+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
48+
with:
49+
VALIDATE_GITLEAKS: true
50+
```
51+
52+
Optional input to enable Markdown Prettier validation:
53+
54+
```yaml
55+
call-lint-workflow:
56+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
57+
with:
58+
VALIDATE_MARKDOWN_PRETTIER: true
59+
```
60+
61+
Optional input to enable YAML Prettier validation:
62+
63+
```yaml
64+
call-lint-workflow:
65+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
66+
with:
67+
VALIDATE_YAML_PRETTIER: true
68+
```
69+
70+
Optional input to enable Markdown validation in include mode:
71+
72+
```yaml
73+
call-lint-workflow:
74+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
75+
with:
76+
VALIDATE_MARKDOWN: true
77+
```
78+
79+
Optional input to enable YAML validation in include mode:
80+
81+
```yaml
82+
call-lint-workflow:
83+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
84+
with:
85+
VALIDATE_YAML: true
1486
```
1587
1688
## Terraform

0 commit comments

Comments
 (0)