如何为GitHub Actions工作流生成的提交进行签名?
为GitHub Actions工作流的提交添加GPG签名
方案一:用GPG密钥签名提交(符合你想要的普通用户签名方式,完全可行)
按以下步骤配置即可:
- 生成并导出GPG密钥
给ur-access-bot@example.com生成GPG密钥,然后导出ASCII格式的私钥:gpg --armor --export-secret-keys ur-access-bot@example.com > gpg-private-key.asc - 把私钥存到GitHub Secrets里
去仓库或组织的Secrets页面,新增GPG_PRIVATE_KEY,值填导出的私钥内容;如果密钥设了密码,再新增GPG_PASSPHRASE存密码。另外,用gpg --list-secret-keys --keyid-format LONG查看密钥ID,把这个ID也存成GPG_PRIVATE_KEY_ID的Secret。 - 修改Actions工作流,配置GPG和签名
把原来的Git配置步骤改成下面这样:- name: 配置Git与GPG签名 run: | git config user.name "ur-access-bot" git config user.email "ur-access-bot@example.com" # 导入GPG私钥 echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import # 标记密钥为信任状态 echo "${{ secrets.GPG_PRIVATE_KEY_ID }}:6:" | gpg --batch --import-ownertrust # 开启Git自动签名所有提交 git config commit.gpgsign true git config user.signingkey ${{ secrets.GPG_PRIVATE_KEY_ID }} # 如果有密码,用GPG代理缓存避免重复输入 echo "test" | gpg --batch --passphrase "${{ secrets.GPG_PASSPHRASE }}" --sign - 把公钥添加到ur-access-bot的GitHub账户
导出公钥:
登录gpg --armor --export ur-access-bot@example.comur-access-bot的GitHub账号,在「Settings -> SSH and GPG keys」里把公钥加进去。
方案二:改用GitHub App
要是觉得GPG配置太麻烦,GitHub App生成的提交会被GitHub自动标记为“已验证”,不用手动签名就能过组织的要求。大致操作是:
- 创建一个GitHub App,给它开仓库的
contents和pull_requests权限。 - 在工作流里用App的私钥生成访问令牌,用这个令牌执行Git操作就行。
内容的提问来源于stack exchange,提问作者vbnm
相关产品推荐
相关产品推荐

