我正在尝试使用 ubuntu:bionic Docker 映像在 Gitlab CI 系统上导入 GPG 密钥。为了安全地做到这一点,我必须将密钥存储在一个所谓的秘密变量中(然后它会在运行时简单地成为一个环境变量)。
所以我尝试以非二进制格式导出密钥,如下所示:
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
在导入之前......但仍然:同样的错误。
任何想法如何正确完成?
我通过添加批处理标志管理导入它而没有任何错误。
不要问我为什么这会解决它。我花了好几个小时才弄清楚这个...