自动对 debuild 中的包文件进行签名并使用 dput 上传

自动对 debuild 中的包文件进行签名并使用 dput 上传

我已经为我正在处理的库创建了一个源包。我使用debuild它来构建它,然后我可以使用成功上传它dput

现在我想设置它,以便我可以从 Jenkins 自动执行此操作。我遇到的主要问题是签署 .dsc 和 .changes 文件。我想做的是使用 签署软件包,而gpg不是亲自debuild执行。这样我就可以使用 gpg 选项自动签署文件--passphrase-fd 0

因此,我使用debuild选项-uc-us,然后使用清除文件签名gpg。但当我这样做时,它会创建一个单独的.dsc.ascsource.changes.asc。当我尝试使用上传时,dput我收到错误

Checking signature on .changes
gpg: no valid OpenPGP data found.
gpg: the signature could not be verified.
Please remember that the signature file (.sig or .asc)
should be the first file given on the command line.

这似乎表明我应该将该.asc文件列为参数,dput但我无法让它发挥作用。

答案1

我找到了以下解决方案debsign及其-p选项:

  • debuild无需签名即可使用,正如您提到的
  • 然后使用debsign选项-p设置要使用的密码,就像这样

    debsign \
      -p'gpg --passphrase-file /home/myname/my_passphrase_file.txt --batch --no-use-agent'\
      -S -kMYKEYID package_source.change
    

仍有一些其他问题,但这部分看起来可以正常工作。直接使用 GPG 签名文件不起作用,因为在签名过程中计算的校验和会debuild被更改。

无论如何,我始终喜欢使用密码来存储密钥。

答案2

简单的答案是:Launchpad 每日构建,他们会为您完成所有这些工作,而且相当安全。

如果您想从 Jenkins 上传源代码,那么我建议只为这个 Jenkins 作业创建一个密钥。如果 Jenkins 作业必须知道密码,那么设置密码不会提高安全性,因此不妨不设置密码。

如果您确实想手动签署.dsc和文件,请使用对其进行签名,然后重命名原始文件。.changesgpg --clearsign.asc

相关内容