GitLab Secrets Detection — конвейер не дает сбоев — проверяется только последняя фиксация

Чтобы реализовать детектор секретов через конвейер в запросах на слияние в моем репозитории GitLab, я следовал этому документу из GitLab здесь: «Включить обнаружение секретов | Отредактируйте файл .gitlab.ci.yml вручную»

Но конвейер не выходит из строя, если обнаружены какие-либо секреты. Кроме того, он просто проверяет последний коммит в мерж-реквесте, что делает его бесполезным.

Как решить обе проблемы?

1 ответ

Я создал файл с именемна корневом уровне в репозитории с помощью следующего кода:

      include:
- template: Security/Secret-Detection.gitlab-ci.yml

secret_detection:
  extends: .secret-analyzer
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  variables:
    GIT_DEPTH: 100
    SECRET_DETECTION_LOG_OPTIONS: ${CI_MERGE_REQUEST_DIFF_BASE_SHA}..${CI_COMMIT_SHA}
  script:
    - apk add jq
    - /analyzer run
    - NUMBER_OF_VULNERABILITIES=$(cat gl-secret-detection-report.json | jq --raw-output '.vulnerabilities | length')
    - if [[ $NUMBER_OF_VULNERABILITIES -gt 0 ]]; then exit "1"; fi
  allow_failure: false

Этот код не только приводит к сбою конвейера, если обнаруживается какой-либо секрет, но также проверяет все коммиты в исходной ветке мерж-реквеста до последнего коммита.

Другие вопросы по тегам