Java gpg:签名失败:密钥不可用
我在maven上托管了一个工件。我在本地windows计算机上的设置一直运行良好<代码>maven,gpg键命名它。到目前为止,我可以执行Java gpg:签名失败:密钥不可用,java,maven,ubuntu,jenkins,gnupg,Java,Maven,Ubuntu,Jenkins,Gnupg,我在maven上托管了一个工件。我在本地windows计算机上的设置一直运行良好maven,gpg键命名它。到目前为止,我可以执行“mvn干净部署”,并且我的工件得到了非常成功的签名和发布 进入与托管在ubuntu服务器上的jenkins的持续集成。我通过putty在ubuntu上成功安装了gpg。由于我已经在maven上使用我的gpg密钥签署了该工件的版本,我应该继续使用它们,对吗?因此,我使用winscp将gnupg文件夹及其所有内容传输到ubuntu。实际上,当我运行gpg--list k
“mvn干净部署”
,并且我的工件得到了非常成功的签名和发布进入与托管在ubuntu服务器上的jenkins的持续集成。我通过putty在ubuntu上成功安装了gpg。由于我已经在maven上使用我的gpg密钥签署了该工件的版本,我应该继续使用它们,对吗?
因此,我使用winscp将gnupg文件夹及其所有内容传输到ubuntu。实际上,当我运行
gpg--list keys
时,我可以看到我的密钥信息(我只配置了一个密钥)。我在想,这是我在ubuntu上配置成功的标志。根据对 我认为ubuntu上没有配置密钥。那么为什么
gpg——列出键会起作用呢??
当jenkins试图部署工件时,“符号
”目标失败,maven gpg插件
报告如下:
gpg: no default secret key: secret key not available
gpg: signing failed: secret key not available
如果构建失败,我如何解决这个问题?我找到了解决方案。我唯一缺少的是我特定的maven
项目的settings.xml
文件。在构建我的项目时,我必须找出maven从何处查找此文件(usinmvn-X
)。不知何故,Ubuntu没有创建它,所以我必须为自己创建一个,并输入相关的gpg
属性。在这之后,一切都很顺利。构建服务是否在另一个用户下运行?如果是这样,请确保将密钥导入服务用户的GnuPG目录(sudo-su username
或类似解决方案)。@JensErat,在阅读您的评论后,我清除了Ubuntu上的.GnuPG目录,并重新开始执行以下导入操作。一切都很顺利。然而,我仍然没有看到任何change@JensErat,我很晚才知道构建服务是在另一个用户上运行的。我确实sudo-suusername
,试图--列出密钥
,但出现了写入访问错误。因此,我使用root帐户授予该用户访问.gnupg
目录的权限,导出密钥并将其导入正确的用户帐户。所有这些都对我没有帮助。我不知道Maven是如何完成签约的,也不能真正帮助你解决这个问题。确保了解在哪个用户下如何准确地调用GnuPG,确保将密钥导入到这个用户,并且要注意,如果权限分配得太广,GnuPG会非常挑剔(通常,只有用户自己才能读写,而没有其他权限)。感谢您提供的有用见解,我做了以上所有涉及用户的工作
。唯一需要的另一个步骤是为maven gpg插件提供一个配置文件来定位默认密钥。