Конвейер Gitlab CI, включающий шаблон, не работает (обнаружение секрета)

#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’ в своей работе, просто чтобы посмотреть, существует ли эта переменная?