Skip to content

Commit b3b85a4

Browse files
Add ShellCheck toggle and kubeval file selector to super‑linter (#87)
This PR adds VALIDATE_BASH and KUBERNETES_KUBEVAL_FILE_NAME inputs to both reusable super‑linter workflows and documents the new options. Changes: - .github/workflows/super-linter.yml: add inputs + pass through in include mode - .github/workflows/super-linter-non-slim.yml: add inputs + pass through in include mode - README.md: document VALIDATE_BASH and KUBERNETES_KUBEVAL_FILE_NAME
2 parents 74e54fc + e32034a commit b3b85a4

3 files changed

Lines changed: 55 additions & 4 deletions

File tree

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ on:
3636
default: false
3737
description: >
3838
"Enable kubeval validation for Kubernetes manifests."
39+
KUBERNETES_KUBEVAL_FILE_NAME:
40+
required: false
41+
type: string
42+
default: ""
43+
description: >
44+
"Regex to select Kubernetes manifest files for kubeval."
3945
VALIDATE_GITHUB_ACTIONS:
4046
required: false
4147
type: boolean
@@ -54,6 +60,12 @@ on:
5460
default: false
5561
description: >
5662
"Enable Gitleaks validation."
63+
VALIDATE_BASH:
64+
required: false
65+
type: boolean
66+
default: false
67+
description: >
68+
"Enable ShellCheck validation."
5769
VALIDATE_MARKDOWN:
5870
required: false
5971
type: boolean
@@ -97,7 +109,7 @@ jobs:
97109
ref: ${{ inputs.CODEQUALITY_REF }}
98110

99111
- 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 }}
112+
if: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_BASH || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER }}
101113
uses: github/super-linter@v7
102114
env:
103115
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml
@@ -106,24 +118,27 @@ jobs:
106118
DEFAULT_BRANCH: main
107119
GITHUB_TOKEN: ${{ github.token }}
108120
JAVA_FILE_NAME: java/checkstyle/checkstyle.xml
121+
KUBERNETES_KUBEVAL_FILE_NAME: "${{ inputs.KUBERNETES_KUBEVAL_FILE_NAME }}"
109122
KUBERNETES_KUBEVAL_OPTIONS: --ignore-missing-schemas
110123
LINTER_RULES_PATH: "${{ inputs.CODEQUALITY_PATH }}/"
111124
MARKDOWN_CONFIG_FILE: markdown/.markdown-lint.yml
112125
VALIDATE_ALL_CODEBASE: "${{ inputs.VALIDATE_ALL_CODEBASE }}"
126+
# Super-linter treats any set VALIDATE_* env as enabled; keep empty unless true.
113127
VALIDATE_MARKDOWN: ${{ inputs.VALIDATE_MARKDOWN && 'true' || '' }}
114128
VALIDATE_YAML: ${{ inputs.VALIDATE_YAML && 'true' || '' }}
115129
VALIDATE_KUBERNETES_KUBEVAL: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL && 'true' || '' }}
116130
VALIDATE_GITHUB_ACTIONS: ${{ inputs.VALIDATE_GITHUB_ACTIONS && 'true' || '' }}
117131
VALIDATE_CHECKOV: ${{ inputs.VALIDATE_CHECKOV && 'true' || '' }}
118132
VALIDATE_GITLEAKS: ${{ inputs.VALIDATE_GITLEAKS && 'true' || '' }}
133+
VALIDATE_BASH: ${{ inputs.VALIDATE_BASH && 'true' || '' }}
119134
VALIDATE_MARKDOWN_PRETTIER: ${{ inputs.VALIDATE_MARKDOWN_PRETTIER && 'true' || '' }}
120135
VALIDATE_YAML_PRETTIER: ${{ inputs.VALIDATE_YAML_PRETTIER && 'true' || '' }}
121136
YAML_CONFIG_FILE: yaml/.yaml-lint.yml
122137
TERRAFORM_TFLINT_CONFIG_FILE: terraform/.tflint.hcl
123138
SQLFLUFF_CONFIG_FILE: sqlfluff/.sqlfluff-lint
124139

125140
- 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) }}
141+
if: ${{ !(inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_BASH || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER) }}
127142
uses: github/super-linter@v7
128143
env:
129144
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml
@@ -132,6 +147,7 @@ jobs:
132147
DEFAULT_BRANCH: main
133148
GITHUB_TOKEN: ${{ github.token }}
134149
JAVA_FILE_NAME: java/checkstyle/checkstyle.xml
150+
# KUBERNETES_KUBEVAL_FILE_NAME: "${{ inputs.KUBERNETES_KUBEVAL_FILE_NAME }}"
135151
KUBERNETES_KUBEVAL_OPTIONS: --ignore-missing-schemas
136152
LINTER_RULES_PATH: "${{ inputs.CODEQUALITY_PATH }}/"
137153
MARKDOWN_CONFIG_FILE: markdown/.markdown-lint.yml

.github/workflows/super-linter.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ on:
4545
default: false
4646
description: >
4747
"Enable kubeval validation for Kubernetes manifests."
48+
KUBERNETES_KUBEVAL_FILE_NAME:
49+
required: false
50+
type: string
51+
default: ""
52+
description: >
53+
"Regex to select Kubernetes manifest files for kubeval."
4854
VALIDATE_GITHUB_ACTIONS:
4955
required: false
5056
type: boolean
@@ -63,6 +69,12 @@ on:
6369
default: false
6470
description: >
6571
"Enable Gitleaks validation."
72+
VALIDATE_BASH:
73+
required: false
74+
type: boolean
75+
default: false
76+
description: >
77+
"Enable ShellCheck validation."
6678
VALIDATE_MARKDOWN:
6779
required: false
6880
type: boolean
@@ -109,7 +121,7 @@ jobs:
109121
run: git config --global url."https://${{ github.token }}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
110122

111123
- 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 }}
124+
if: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_BASH || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER }}
113125
uses: github/super-linter/slim@v7
114126
env:
115127
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml
@@ -119,24 +131,27 @@ jobs:
119131
FILTER_REGEX_EXCLUDE: "${{ inputs.FILTER_REGEX_EXCLUDE }}"
120132
GITHUB_TOKEN: ${{ github.token }}
121133
JAVA_FILE_NAME: java/checkstyle/checkstyle.xml
134+
KUBERNETES_KUBEVAL_FILE_NAME: "${{ inputs.KUBERNETES_KUBEVAL_FILE_NAME }}"
122135
KUBERNETES_KUBEVAL_OPTIONS: --ignore-missing-schemas
123136
LINTER_RULES_PATH: "${{ inputs.CODEQUALITY_PATH }}/"
124137
MARKDOWN_CONFIG_FILE: markdown/.markdown-lint.yml
125138
VALIDATE_ALL_CODEBASE: "${{ inputs.VALIDATE_ALL_CODEBASE }}"
139+
# Super-linter treats any set VALIDATE_* env as enabled; keep empty unless true.
126140
VALIDATE_MARKDOWN: ${{ inputs.VALIDATE_MARKDOWN && 'true' || '' }}
127141
VALIDATE_YAML: ${{ inputs.VALIDATE_YAML && 'true' || '' }}
128142
VALIDATE_KUBERNETES_KUBEVAL: ${{ inputs.VALIDATE_KUBERNETES_KUBEVAL && 'true' || '' }}
129143
VALIDATE_GITHUB_ACTIONS: ${{ inputs.VALIDATE_GITHUB_ACTIONS && 'true' || '' }}
130144
VALIDATE_CHECKOV: ${{ inputs.VALIDATE_CHECKOV && 'true' || '' }}
131145
VALIDATE_GITLEAKS: ${{ inputs.VALIDATE_GITLEAKS && 'true' || '' }}
146+
VALIDATE_BASH: ${{ inputs.VALIDATE_BASH && 'true' || '' }}
132147
VALIDATE_MARKDOWN_PRETTIER: ${{ inputs.VALIDATE_MARKDOWN_PRETTIER && 'true' || '' }}
133148
VALIDATE_YAML_PRETTIER: ${{ inputs.VALIDATE_YAML_PRETTIER && 'true' || '' }}
134149
YAML_CONFIG_FILE: yaml/.yaml-lint.yml
135150
TERRAFORM_TFLINT_CONFIG_FILE: terraform/.tflint.hcl
136151
SQLFLUFF_CONFIG_FILE: sqlfluff/.sqlfluff-lint
137152

138153
- 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) }}
154+
if: ${{ !(inputs.VALIDATE_KUBERNETES_KUBEVAL || inputs.VALIDATE_GITHUB_ACTIONS || inputs.VALIDATE_CHECKOV || inputs.VALIDATE_GITLEAKS || inputs.VALIDATE_BASH || inputs.VALIDATE_MARKDOWN || inputs.VALIDATE_YAML || inputs.VALIDATE_MARKDOWN_PRETTIER || inputs.VALIDATE_YAML_PRETTIER) }}
140155
uses: github/super-linter/slim@v7
141156
env:
142157
ANSIBLE_CONFIG_FILE: ansible/.ansible-lint.yml
@@ -146,6 +161,7 @@ jobs:
146161
FILTER_REGEX_EXCLUDE: "${{ inputs.FILTER_REGEX_EXCLUDE }}"
147162
GITHUB_TOKEN: ${{ github.token }}
148163
JAVA_FILE_NAME: java/checkstyle/checkstyle.xml
164+
# KUBERNETES_KUBEVAL_FILE_NAME: "${{ inputs.KUBERNETES_KUBEVAL_FILE_NAME }}"
149165
KUBERNETES_KUBEVAL_OPTIONS: --ignore-missing-schemas
150166
LINTER_RULES_PATH: "${{ inputs.CODEQUALITY_PATH }}/"
151167
MARKDOWN_CONFIG_FILE: markdown/.markdown-lint.yml

README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ with:
2222
VALIDATE_KUBERNETES_KUBEVAL: true
2323
```
2424
25+
Optional input to control which files kubeval validates:
26+
27+
```yaml
28+
call-lint-workflow:
29+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
30+
with:
31+
VALIDATE_KUBERNETES_KUBEVAL: true
32+
KUBERNETES_KUBEVAL_FILE_NAME: \\.ya?ml$
33+
```
34+
2535
Optional input to enable GitHub Actions validation:
2636
2737
```yaml
@@ -49,6 +59,15 @@ with:
4959
VALIDATE_GITLEAKS: true
5060
```
5161
62+
Optional input to enable ShellCheck validation:
63+
64+
```yaml
65+
call-lint-workflow:
66+
uses: "riege/code-quality/.github/workflows/super-linter.yml@v1.0.0"
67+
with:
68+
VALIDATE_BASH: true
69+
```
70+
5271
Optional input to enable Markdown Prettier validation:
5372
5473
```yaml

0 commit comments

Comments
 (0)