2525 type : string
2626 required : true
2727
28+ permissions : {}
29+
2830jobs :
2931 quality_checks :
3032 runs-on : ubuntu-22.04
33+ permissions :
34+ contents : read
35+ id-token : write
36+ packages : read
3137 container :
3238 image : ${{ inputs.pinned_image }}
3339 options : --user 1001:1001 --group-add 128
@@ -36,16 +42,19 @@ jobs:
3642 shell : bash
3743 steps :
3844 - &init_tool_versions
39- name : copy .tool-versions
45+ name : copy needed files from devcontainer user to runner home directory or bin directory
4046 run : |
4147 cp /home/vscode/.tool-versions "$HOME/.tool-versions"
48+ cp /home/vscode/.grant.yaml "$HOME/.grant.yaml"
49+ mkdir -p "$HOME/.local/bin"
50+ sudo cp /home/vscode/.local/bin/zizmor /usr/local/bin/zizmor
4251
4352 - &checkout
4453 name : Checkout code
4554 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
4655 with :
47- ref : ${{ env.BRANCH_NAME }}
4856 fetch-depth : 0
57+ persist-credentials : false
4958
5059 - &setup_npmrc
5160 name : Setting up .npmrc
@@ -67,12 +76,18 @@ jobs:
6776 make install
6877 - name : Run secrets scan
6978 run : |
79+ git-secrets --register-aws
80+ git-secrets --add-provider -- cat /usr/share/secrets-scanner/nhsd-rules-deny.txt
7081 make secret-scan
7182 - name : Run actionlint
7283 run : |
7384 make actionlint
7485
75- - name : Check language tools used and setup trivy config
86+ - name : Run zizmor
87+ run : |
88+ make zizmor
89+
90+ - name : Check language tools used
7691 id : check_languages
7792 run : |
7893 if [ -f "pyproject.toml" ] && grep -q '\[tool.poetry\]' "pyproject.toml"; then
@@ -121,14 +136,7 @@ jobs:
121136 fi
122137 - name : Check licenses
123138 run : |
124- make trivy-license-check
125-
126- - name : Show license scan output
127- if : always()
128- run : |
129- if [ -f license_scan.txt ]; then
130- cat .trivy_out/license_scan.txt
131- fi
139+ make grant-scan
132140 - name : Run code lint
133141 run : |
134142 make lint
@@ -140,51 +148,19 @@ jobs:
140148 - name : Run unit tests
141149 run : |
142150 make test
143- - name : make generate sbom
151+ - name : Generate sbom
144152 run : |
145- make trivy -generate-sbom
153+ make syft -generate-sbom-dev-dependencies
146154 - name : Upload sbom
147155 uses : actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
148156 with :
149- name : sbom.cdx.json
150- path : .trivy_out /sbom.cdx.json
157+ name : sbom.dev. cdx.json
158+ path : .sbom /sbom.dev .cdx.json
151159
152- - name : Check python vulnerabilities
153- if : ${{ steps.check_languages.outputs.uses_poetry == 'true' }}
154- continue-on-error : ${{ github.actor == 'dependabot[bot]' }}
160+ - name : Check vulnerabilities
155161 run : |
156- make trivy -scan-python
162+ make grype -scan-dev-dependencies
157163
158- - name : Check node vulnerabilities
159- if : ${{ steps.check_languages.outputs.uses_node == 'true' }}
160- continue-on-error : ${{ github.actor == 'dependabot[bot]' }}
161- run : |
162- make trivy-scan-node
163- - name : Check go vulnerabilities
164- if : ${{ steps.check_languages.outputs.uses_go == 'true' }}
165- continue-on-error : ${{ github.actor == 'dependabot[bot]' }}
166- run : |
167- make trivy-scan-go
168- - name : Check java vulnerabilities
169- if : ${{ steps.check_languages.outputs.uses_java == 'true' }}
170- continue-on-error : ${{ github.actor == 'dependabot[bot]' }}
171- run : |
172- make trivy-scan-java
173- - name : Show vulnerability output
174- if : always()
175- run : |
176- if [ -f .trivy_out/dependency_results_python.txt ]; then
177- cat .trivy_out/dependency_results_python.txt
178- fi
179- if [ -f .trivy_out/dependency_results_node.txt ]; then
180- cat .trivy_out/dependency_results_node.txt
181- fi
182- if [ -f .trivy_out/dependency_results_java.txt ]; then
183- cat .trivy_out/dependency_results_java.txt
184- fi
185- if [ -f .trivy_out/dependency_results_go.txt ]; then
186- cat .trivy_out/dependency_results_go.txt
187- fi
188164 - name : " check is SONAR_TOKEN exists"
189165 env :
190166 super_secret : ${{ secrets.SONAR_TOKEN }}
@@ -279,6 +255,10 @@ jobs:
279255 echo "images=$NORMALIZED" >> "$GITHUB_OUTPUT"
280256
281257 docker_vulnerability_scan :
258+ permissions :
259+ contents : read
260+ id-token : write
261+ packages : read
282262 runs-on : ubuntu-22.04
283263 needs : get_docker_images_to_scan
284264 container :
@@ -310,19 +290,15 @@ jobs:
310290 - name : Check docker vulnerabilities
311291 continue-on-error : ${{ github.actor == 'dependabot[bot]' }}
312292 run : |
313- make trivy -scan-docker
293+ make grype -scan-docker-image
314294 env :
315295 DOCKER_IMAGE : ${{ matrix.docker_image }}
316296
317- - name : Show docker vulnerability output
318- if : always()
319- run : |
320- echo "Scan output for ${{ matrix.docker_image }}"
321- if [ -f .trivy_out/dependency_results_docker.txt ]; then
322- cat .trivy_out/dependency_results_docker.txt
323- fi
324-
325297 IaC-validation :
298+ permissions :
299+ contents : read
300+ id-token : write
301+ packages : read
326302 runs-on : ubuntu-22.04
327303 container :
328304 image : ${{ inputs.pinned_image }}
0 commit comments