Jenkins 项目的 gpg: signing failed: Bad passphrase 错误

因为我们项目需要使用 Jenkins 对文件进行签名。

但是我们遇到了

gpg: signing failed: Bad passphrase

错误。

原因和解决

通常这个问题的原因是 Key 已经配置成功并且已经被命令行找到了。

主要原因是你的秘钥密码配置的问题。

这个配置有 2 个地方,第一个地方是项目的 Pom.xml 文件。

Pom.xml

在 Pom.xml 文件中,我们可以配置 passphraseServerId 这个参数。

这个参数将会告诉 maven 到 settings.xml 文件夹中找密码。

settings.xml

这个文件中,有 2 个地方需要配置。

第一个地方为在 servers tag 中添加一个:

	<server>
			<id>ossez</id>
			<passphrase>**********</passphrase>
		</server>

在这里输入你在创建秘钥的时候输入的密码。

另外一个地方就是 profile 部分。

在这里要需要在属性 tag 中添加:

				<gpg.executable>gpg</gpg.executable>
                <gpg.keyname>9546E435CF91D08895437D0C**************</gpg.keyname>

gpg.keyname 为你创建的 key 的 UID

如果你不知道你的 Key UID 是多少的话。

在你创建 key 的机器上,运行

gpg --list-secret-keys

2023-01-09_16-57-36

输出的 16 进制字符串就是你需要的 UID。

完成上面 2 个配置后就可以完成文件签名了。