Continuous integration 使用gpg作为持续构建的一部分对RPM进行签名-如何避免提示输入密码短语?

Continuous integration 使用gpg作为持续构建的一部分对RPM进行签名-如何避免提示输入密码短语?,continuous-integration,build-automation,signing,gnupg,Continuous Integration,Build Automation,Signing,Gnupg,我有一个持续集成构建系统,它通过cron触发的shell脚本生成RPM。我想用gpg对RPM进行签名,但gpg坚持要求用户在控制台手动输入密码短语,这显然是不可能的,因为cron没有用户控制台 我已经读过关于gpg代理的内容,它允许您为当前登录会话输入一次密码短语,但是cron也没有登录会话。我希望能够将gpg代理配置为在启动时接受一次密码短语,并在需要时将其交给cron会话。我不知道这是否可能,而且gpg代理的文档非常少 另一种选择是使用expect在gpg请求时输入密码短语,但显然这是一个很

我有一个持续集成构建系统,它通过cron触发的shell脚本生成RPM。我想用gpg对RPM进行签名,但gpg坚持要求用户在控制台手动输入密码短语,这显然是不可能的,因为cron没有用户控制台

我已经读过关于gpg代理的内容,它允许您为当前登录会话输入一次密码短语,但是cron也没有登录会话。我希望能够将gpg代理配置为在启动时接受一次密码短语,并在需要时将其交给cron会话。我不知道这是否可能,而且gpg代理的文档非常少


另一种选择是使用expect在gpg请求时输入密码短语,但显然这是一个很大的安全漏洞,因为密码短语需要包含在构建脚本中。

您应该在启动时启动gpg代理,并保存gpg\u agent\u INFO环境变量。然后,您可以在脚本环境中设置它,并应按预期工作。此外,请确保GPG_AGENT_INFO中套接字的权限允许脚本读取它。

用于生成RPM的任何构建工具都可以对其进行签名。例如,gradle有一个插件为您进行签名。您必须使用密钥环文件的id、密码短语和位置创建一个属性文件,其余的都由它来完成


请看:

谢谢,这正是我想要的。但是如何查询或设置套接字上的权限呢?您可以像往常一样设置权限(在GPG_代理_信息中的路径上)。然后,如果设置了环境变量,gpg应该使用它,而不需要您执行更多操作。注意,我还没有尝试过这个案例,所以让我们看看它是否有效;)虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。