gpg: 签名失败:未找到秘钥

6
我有一个托管在maven上的工件。我的本地Windows机器设置一直很完美; Maven、GPG密钥等等,到目前为止我可以执行“mvn clean deploy”,我的工件会被成功签名和发布。

现在我要使用托管在Ubuntu服务器上的Jenkins进行持续集成。我通过putty成功在Ubuntu上安装了GPG。由于我已经有使用我的GPG密钥签名的工件版本,所以我应该继续使用它们,对吗?

因此,我使用WinSCP将gnupg文件夹及其所有内容传输到Ubuntu。确实,当我运行“gpg --list-keys”时,我可以看到我的密钥信息(我只配置了一个密钥)。我认为这是Ubuntu上配置成功的迹象。

根据这个问题的答案,我应该认为在Ubuntu上没有配置任何密钥。那么为什么“gpg --list-keys”会起作用呢?

当Jenkins尝试部署工件时,“sign”目标失败,而“maven-gpg-plugin”报告如下:
gpg: no default secret key: secret key not available
gpg: signing failed: secret key not available

当构建失败时,我该如何解决这个问题?

1
构建服务是否在另一个用户下运行?如果是,请确保将密钥导入到服务用户的GnuPG目录中(sudo -su username或类似解决方案)。 - Jens Erat
@JensErat,阅读了您的评论后,我在Ubuntu上清除了.gnupg目录,并重新开始按照此教程进行导入。一切都很顺利。然而,我仍然没有看到任何变化。 - egimaben
@JensErat,我很晚才知道构建服务是在不同的用户上运行。我使用了sudo -su用户名,尝试--list-keys但是得到了写入访问错误。所以,我使用root帐户给这个用户访问.gnupg目录的权限,导出密钥并将其导入正确的用户帐户中。但所有这些都没有帮助我。 - egimaben
我不确定Maven如何执行签名,无法真正帮助您解决问题。请确保了解GnuPG是如何在哪个用户下调用的,确保将密钥导入到该用户中,并注意如果权限过于宽泛,GnuPG会非常挑剔(通常只有用户本身应该能够读写,而没有其他人)。 - Jens Erat
感谢提供有用的见解,我已经完成了涉及“用户”的所有操作。唯一需要的其他步骤是为maven-gpg-plugin创建配置文件以定位默认密钥。 - egimaben
1个回答

2

我找到了解决方案。唯一遗漏的是我的特定 maven 项目中缺少 settings.xml 文件。我必须弄清楚在构建项目时 maven 在哪里查找此文件(使用 mvn -X)。不知何故,Ubuntu 没有创建它,所以我不得不自己创建一个并放入相关的 gpg 属性。之后,一切都很容易地工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接