#continuous-integration #gitlab #gitlab-ci #pipeline
#непрерывная интеграция #gitlab #gitlab-ci #конвейер
Вопрос:
Я сталкиваюсь с некоторыми странностями с включениями Gitlab CI, кто-нибудь когда-нибудь видел что-то подобное?
Я пытаюсь использовать обнаружение секретов gitlab с помощью простого
include:
- template: Secret-Detection.gitlab-ci.yml
который ссылается на это здесь …. но это вообще не работает, ни один шаг никогда не отображается, если я не повторно укажу эту часть из Secret-Detection.gitlab-ci.yml
, но в моем собственном репозитории .gitlab-ci.yml
:
secret_detection:
rules:
- if: $CI_COMMIT_BRANCH amp;amp; $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
Но почему это поможет, если оно уже есть в оригинале Secret-Detection.gitlab-ci.yml
??
В принципе, это не работает:
include:
- template: Secret-Detection.gitlab-ci.yml
Но это работает:
include:
- template: Secret-Detection.gitlab-ci.yml
secret_detection:
- if: $CI_COMMIT_BRANCH amp;amp; $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
Я использую Gitlab 13.2.3 EE. Я работаю над веткой, а не над основным.
Комментарии:
1. В вашем первом примере вы перезаписываете secret_detection: rules: if, но в вашем последнем примере вы перезаписываете только secret_detection: if. Это намеренно или по недосмотру? Это может быть важно.
Ответ №1:
Вы включаете шаблон, а затем переопределяете поведение secret_detection
задания по умолчанию. Однако, поступая таким образом, вы фактически переопределяете весь rules
раздел задания.
Это:
rules:
- if: $SECRET_DETECTION_DISABLED
when: never
- if: $CI_COMMIT_BRANCH amp;amp; $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
Становится таким:
rules:
- if: $CI_COMMIT_BRANCH amp;amp; $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
Возможно ли, что SECRET_DETECTION_DISABLED
переменная определена в вашей работе? Если это так, использование исходного шаблона отключит обнаружение секретов. Переопределяя rules
раздел задания, вы, по сути, больше не проверяете SECRET_DETECTION_DISABLED
. Вы можете проверить значение переменной, добавив printenv
инструкцию в script
раздел вашего задания.
Комментарии:
1. Синтаксис «if: $SECRET_DETECTION_DISABLED», похоже, проверяет, существует ли переменная, а не ее значение. Я пытался установить его явно раньше, как вы предлагаете, и это всегда приводило к сбою, даже если установлено значение false. В тот момент, когда я удалил его, он снова заработал (также включив дополнительную часть, о которой я упоминал в моем первоначальном сообщении)
2. Ты абсолютно прав, @KROM , я упустил это из виду. Вы не должны устанавливать для этой переменной какое-либо значение, поскольку ее существование приведет к тому, что обнаружение секрета не будет выполняться. Можете ли вы попробовать запустить ‘printenv’ в своей работе, просто чтобы посмотреть, существует ли эта переменная?