# #gitlab-ci #gnupg #git-secret
Вопрос:
У меня проблемы с секретом git в заданиях gitlab ci.
Что я сделал:
- инициализация, добавление пользователей, добавление файлов, их скрытие с помощью git secret
- создайте задание, в котором я хочу раскрыть файлы:
git secret: stage: init before_script: - sh -c "echo 'deb https://gitsecret.jfrog.io/artifactory/git-secret-deb git-secret main' gt;gt; /etc/apt/sources.list" - wget -qO - 'https://gitsecret.jfrog.io/artifactory/api/gpg/key/public' | apt-key add - - apt-get update amp;amp; apt-get install -y git-secret script: - echo $GPG_PRIVATE_KEY | tr ',' 'n' gt; ./pkey.gpg - export GPG_TTY=$(tty) - gpg --batch --import ./pkey.gpg - git secret reveal -p ${GPG_PASSPHRASE}
Журналы результатов:
... $ gpg --batch --import ./pkey.gpg gpg: directory '/root/.gnupg' created gpg: keybox '/root/.gnupg/pubring.kbx' created gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key SOMEKEY: public key "Email Name lt;ci@email.comgt;" imported gpg: key SOMEKEY: secret key imported gpg: Total number processed: 1 gpg: imported: 1 gpg: secret keys read: 1 gpg: secret keys imported: 1 $ git secret reveal -p ${GPG_PASSPHRASE} gpg: [don't know]: partial length invalid for packet type 20 git-secret: abort: problem decrypting file with gpg: exit code 2: /path/to/decrypted/file
Я не понимаю, в чем проблема. Что это значит packet type 20
? А длина чего? Локально это оказалось нормально. Команда git secret whoknows
показывает, что электронная почта на ci env может расшифровываться. Кодовая фраза проверена и передана на задание.
Ответ №1:
Это распространенная проблема с форматом ключей.
Поскольку вы используете CI GitLab, вы должны использовать преимущество типа файла в переменных CI/CD вместо сохранения значения ключа GPG в качестве типа переменной.
Прежде всего, забудьте о создании брони в одной линии с помощью конвейера | tr 'n' ','
и получите надлежащую многострочную броню.
Во-вторых, добавьте его в свои переменные CI GitLab с типом «Файл», добавьте пустую строку в конце, а затем удалите ее (это кажется глупым, но избавит вас от головной боли, так как, похоже, возникает проблема при копировании непосредственно из оболочки в текстовое поле в GitLab).
В-третьих, импортируйте непосредственно файл в свою связку ключей:
gpg --batch --import $GPG_PRIVATE_KEY
Ответ №2:
Для меня проблема заключалась в том, что версии GnuPG различались между машиной шифрования (версия 2.0) и стороной расшифровки (версия 2.0).
После того, как я понизил его до версии 2.0 (из-за того, что версия 2.0 3 еще не была доступна в Debian), проблема исчезла.