Я пытаюсь импортировать GPG, включают систему CI Gitlab с ubuntu:bionic изображением Докера. Чтобы сделать это надежно, я должен сохранить ключ в так называемой секретной переменной (который затем просто становится переменной среды во времени выполнения).
Таким образом, я пытался экспортировать ключ в недвоичном формате как это:
gpg2 --armor --export-secret-keys "my name <my email>" > my-gpg-key.asc
my-gpg-key.asc был похож на это затем:
-----BEGIN PGP PRIVATE KEY BLOCK-----
long multi line ascii string
-----END PGP PRIVATE KEY BLOCK-----
Затем я скопировал содержание файла и определил секретную переменную от нее. Переменную называют LAUNCHPAD_GPG_PRIVATE_KEY
Вот то, что я попробовал:
apt-get -qq update --yes
apt-get -qq install --yes gnupg2 > /dev/null
export GPG_TTY=$(tty) # compensate for ioctl error
gpg2 --list-keys
gpg2 -v --import <(echo "$LAUNCHPAD_GPG_PRIVATE_KEY")
gpg2 --list-keys
Это вызывает:
gpg: key 17B1EA9E090F697D/17B1EA9E090F697D: error sending to agent: No such file or directory
gpg: error building skey array: No such file or directory
Я также пытался экспортировать и импортировать ключ с gpg вместо gpg2: Тот же результат...
Я также пытался работать
gpg-agent --daemon
и
gpg-agent --daemon --allow-loopback-pinentry
перед импортом..., но все еще: Та же ошибка.
Какие-либо идеи, как это может быть сделано правильно?
Я справился, импортируют его без любых ошибок путем добавления пакетного флага.
gpg2 -v --batch --import <(echo "$LAUNCHPAD_GPG_PRIVATE_KEY")
Не спрашивайте меня, почему это фиксирует его. Мне потребовались часы для понимания этого...