我已经为我正在处理的库创建了一个源包。我使用debuild
它来构建它,然后我可以使用成功上传它dput
。
现在我想设置它,以便我可以从 Jenkins 自动执行此操作。我遇到的主要问题是签署 .dsc 和 .changes 文件。我想做的是使用 签署软件包,而gpg
不是亲自debuild
执行。这样我就可以使用 gpg 选项自动签署文件--passphrase-fd 0
。
因此,我使用debuild
选项-uc
和-us
,然后使用清除文件签名gpg
。但当我这样做时,它会创建一个单独的.dsc.asc
和source.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
和文件,请使用对其进行签名,然后重命名原始文件。.changes
gpg --clearsign
.asc