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

但是我们遇到了

gpg: signing failed: Bad passphrase

错误。

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

原因和解决

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

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

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

Pom.xml

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

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

Jenkins 项目的 gpg: signing failed: Bad passphrase 错误_运维_02

settings.xml

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

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

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

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

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

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

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

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

gpg.keyname 为你创建的 key 的 UID

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

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

gpg --list-secret-keys

Jenkins 项目的 gpg: signing failed: Bad passphrase 错误_字符串_04

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

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