【发布时间】:2016-06-16 14:11:07
【问题描述】:
我在 Maven 上托管了一个工件。我在本地 Windows 机器上的设置运行良好; maven, gpg keys 命名。到目前为止,我可以做到'mvn clean deploy',并且我的工件得到了非常成功的签名和发布。
与托管在 ubuntu 服务器上的 jenkins 进行持续集成。我通过 putty 在 ubuntu 上成功安装了 gpg。由于我已经使用我的 gpg 密钥签署了 maven 上的工件版本,我应该继续使用它们对吗?
所以,我使用 winscp 将 gnupg 文件夹及其所有内容传输到 ubuntu。确实,当我运行gpg --list-keys 时,我可以看到我的密钥信息(我只配置了一个密钥)。我在想,这表明我在 ubuntu 上的配置是成功的。
根据一个回答
this question 我应该认为 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
构建失败,我该如何解决这个问题?
【问题讨论】:
-
构建服务是否在另一个用户下运行?如果是这样,请确保将密钥导入服务用户的 GnuPG 目录(
sudo -su username或类似解决方案)。 -
@JensErat,在阅读了您的评论后,我清除了 Ubuntu 上的 .gnupg 目录,并按照this tutorial 重新开始导入。一切运作良好。但是,我仍然没有看到任何变化
-
@JensErat,我很晚才知道构建服务在不同的用户上运行。我做了
sudo -su username,尝试了--list-keys,但出现了写访问错误。因此,我使用 root 帐户授予该用户对.gnupg目录的访问权限,导出密钥并将其导入正确用户的帐户。这一切还没有帮助我。 -
我不知道 Maven 是如何执行签名的,也无法真正帮助您解决这个问题。确保了解 GnuPG 是如何在哪个用户下调用的,确保将密钥导入该用户,并注意 GnuPG 对权限非常挑剔,如果权限授予过于广泛(通常,只有用户本身应该是能读能写,没有别的)。
-
感谢您提供有用的见解,我完成了涉及
user的所有上述工作。唯一需要的其他步骤是 maven-gpg-plugin 的配置文件以找到默认密钥。
标签: java maven ubuntu jenkins gnupg