Ошибка gpg: ошибка расшифровки: нет секретного ключа при использовании Blackbox в задании Circle Ci

У меня есть этот рабочий процесс/работа Circle Ci:

build:
docker:
  - image: circleci/python:3.7
environment:
  PIPENV_VENV_IN_PROJECT: true

steps:
  - checkout
#other stuff here ->  installing dependencies
  - run:
      name: Running blackbox
      command: |
        git clone https://github.com/StackExchange/blackbox.git
        cd blackbox && sudo make symlinks-install && cd ..
        echo "Importing key"
        echo -e "$GPG_KEY_CI" | gpg --import
        blackbox_postdeploy

Я застрял почти на 3 часа с ошибкой "gpg: сбой расшифровки: нет секретного ключа" при работающем конвейере. Я установил GPG_KEY_CI в качестве переменной окружения в Circle Ci и провел несколько тестов с помощью команды «echo gpg --list-secret-keys», чтобы проверить, был ли импортирован секретный ключ (закрытый ключ). Итак, все выглядит правильно.

Вот результат:

Cloning into 'blackbox'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 2151 (delta 6), reused 7 (delta 2), pack-reused 2133
Receiving objects: 100% (2151/2151), 617.31 KiB | 1.10 MiB/s, done.
Resolving deltas: 100% (1369/1369), done.
Symlinking files from ./bin to /usr/local/bin
Done.
Importing key
gpg: directory '/home/circleci/.gnupg' created
gpg: keybox '/home/circleci/.gnupg/pubring.kbx' created
gpg: /home/circleci/.gnupg/trustdb.gpg: trustdb created
gpg: key 9FxxxxxxxxxxxxD9: public key "Circle Ci <[email protected]>" imported
gpg: key 9FxxxxxxxxxxxxD9: secret key imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
========== Importing keychain: START
gpg: Total number processed: 1
gpg:              unchanged: 1
========== Importing keychain: DONE
========== Decrypting new/changed files: START
gpg: decryption failed: No secret key

person Andre Araujo    schedule 16.11.2019    source источник


Ответы (1)


Через 3 часа я понял, что экспортированный ключ был с парольной фразой, защищающей закрытый ключ. Итак, просто снова экспортируйте закрытый ключ, выполнив следующие действия:

1) Сначала перечислите ключи для получения отпечатка пальца:

>> gpg --list-secret-keys

/Users/xxxxxx/.gnupg/pubring.kbx
--------------------------------

sec   rsa2048 2019-11-16 [SC] [expires: 2021-11-15]
      FED8634xxxxxxxxxxxxxxxxxxxxxx1E4C7020D9 <====== fingerprint
uid           [ultimate] Circle Ci <[email protected]>
ssb   rsa2048 2019-11-16 [E] [expires: 2021-11-15]

2) Удалите пропуск из вашего закрытого ключа. Когда GnuPG запросит новую парольную фразу, просто оставьте поле пустым и нажмите Enter (дважды):

>> gpg --edit-key <fingerprint>
passwd
save

3) Снова экспортируйте закрытый ключ в буфер обмена (pbcopy копирует стандартный ввод в буфер обмена):

>> gpg -a --export-secret-keys <fingerprint> | cat -e | sed 's/\$/\\n/g' | pbcopy

4) Замените ключ на переменные среды Circle Ci.

person Andre Araujo    schedule 16.11.2019