[英]Gitlab CI execute SAST jobs only when merging branch to master
您好,我正在嘗試弄清楚如何僅在將分支合並到 master 時運行 SAST 作業,因為它們持續 5 分鍾並且在任何分支的每次推送中都在運行。
這意味着每次有人向他們的 MR 分支推送時,安全階段都會與所有 SAST 作業一起執行。
我想要實現的是當分支要合並到 master 時執行 SAST 作業。
gitlab-ci.yml:
include:
- template: Jobs/SAST.gitlab-ci.yml
stages:
- security
- tests
my_tests:
stage: tests
script:
- echo Running tests ...
sast:
stage: security
到目前為止我嘗試使用的是:
sast:
stage: security
only:
- master
但它失敗了,因為包含的模板Jobs/SAST.gitlab-ci.yml
已經使用規則和規則與 only/except 不能一起使用。
jobs:sast 配置密鑰不能與
rules
一起使用:僅
在源代碼Jobs/SAST.gitlab-ci.yml
中不使用except
but rules
,這些規則也與only
不兼容。
但您也可以切換到規則語法:
sast:
stage: security
rules:
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
when: always
這應該夠了吧
您可以使用此配置:
include:
- template: Jobs/SAST.gitlab-ci.yml
phpcs-security-audit-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.php'
semgrep-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.go'
- '**/*.html'
- '**/*.js'
- '**/*.jsx'
- '**/*.ts'
- '**/*.tsx'
gosec-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.go'
nodejs-scan-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/package.json'
bandit-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.py'
flawfinder-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.c'
- '**/*.cpp'
eslint-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.html'
- '**/*.js'
- '**/*.jsx'
- '**/*.ts'
- '**/*.tsx'
spotbugs-sast:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
exists:
- '**/*.groovy'
- '**/*.java'
- '**/*.scala'
- '**/*.kt'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.