使 Gitea Web 操作 Git 有 GPG 签名

记录一下 Gitea Web 操作 Git 的 GPG 签名步骤,如果自己搭建,需要签名可能会有一点点用。

官方文档 GPG 提交签名 注意 GPG 签名不要有密码,自动化脚本很难处理输入密码。

配置文件部分示例

1
2
3
4
5
6
7
[repository.signing]
# DEFAULT_TRUST_MODEL = committer
SIGNING_KEY = default
INITIAL_COMMIT = pubkey
CRUD_ACTIONS = pubkey
WIKI = pubkey
MERGES = pubkey

正常默认会暴露一个文件夹,其中有三个文件夹 git , gitea , ssh 。默认会在 %(APP_DATA_PATH)/home 中运行 git 。如果比如配置文件 app.ini 中 APP_DATA_PATH=/data/gitea。在容器内 /data/gitea/home 下会有 .gitconfig 文件,需要gpgsign = true 和 user 的三数据,示例如下。

1
2
3
4
5
6
7

[user]
    email = mail@gmail.com
	name = mailer
	signingkey = xxxxxxxxxxxxxxx
[commit]
	gpgsign = true

然后,把 GPG 数据问你`.gnupg目录放在容器内/data/gitea/home` 文件夹下。

注意:由于 Gitea 在 Docker 内使用 git 账户,因此注意文件夹的 owner 和组。可使用 chgrp chown 两个命令来处理。我之前没有注意到,出现了 Error: exit status 1Stdout: Stderr: error: gpg failed to sign the data 问题

如果在网页编辑,在提交 commit 那里看到一个小锁🔒,就说明找到密钥了。能成功 commit ,证明成功了。如果成功后,图标不是绿色。可以在该库的设置里,签名验证设置-签名信任模型 选择 协作者:信任协作者的签名

最终效果

正常在自己电脑上使用自己的签名,一个实心锁

Web API 操作,Gitea 使用的签名。有区别的锁