logo
2023-09-30
tech

配置 GitPod 使用 GPG 签名 git commit

GitPod 是一个基于浏览器的在线 IDE,它可以直接在 GitHub 上打开,无需本地安装任何软件,只需要一个浏览器就可以进行开发。GitPod 会自动为你的项目创建一个 Docker 容器,然后在容器中运行 VS Code,你可以在浏览器中使用 VS Code 进行开发,开发完成后,GitPod 会自动关闭容器,不会占用你的资源。

最近经常以本地 VS Code 的方式开发,但是在提交代码的时候,发现 GitPod 无法使用 GPG 签名 git commit。本文介绍如何配置 GitPod 使用 GPG 签名 git commit。

导出 GPG 私钥

首先列出你的 GPG 私钥:

gpg --list-secret-keys

然后导出 GPG 私钥:

gpg --export-secret-keys 7FA1D3XXXXXXXXXXXXXXXXXXXX | base64

以上命令已 macOS 为例,在 Linux 上可能需要使用 base64 -w 0

输出的一长串结果就是你的 GPG 私钥,将其复制到剪贴板。

添加到 GitPod 环境变量

在 GitPod 中,点击左侧的菜单,选择 Settings,然后在左侧的菜单中选择 Variables,点击右侧的 Add Variable 按钮,添加一个名为 GPG_PRIVATE_KEY 的环境变量,将刚才复制的 GPG 私钥粘贴到 Value 中,点击 Save Changes 按钮保存。

通过 Dotfiles 仓库自动配置

如果还没有 Dotfiles 仓库,可以参考这篇文章:https://www.gitpod.io/docs/configure/user-settings/dotfiles。

在 Dotfiles 仓库中,创建一个名为 gpg.sh 的文件,确保该文件会被执行,内容如下:

#!/bin/bash

gpg --verbose --batch --import <(echo $GPG_PRIVATE_KEY|base64 -d)
echo 'pinentry-mode loopback' >> ~/.gnupg/gpg.conf
git config --global user.signingkey 7FA1D3XXXXXXXXXXXXXXXXXXXX
git config --global commit.gpgsign true

记得在 GitPod 中启用 Dotfiles 仓库的自动配置。

测试

新建或重启一个 workspace,在命令行或 VSCode 的源代码管理其中测试 commit 是否已经使用 GPG 签名。

总结

通过 Dotfiles + Variables 的方式,可以在任意一个 GitPod workspace 中使用 GPG 签名。如果想要区分不同的 workspace,可以修改环境变量的 scope 或者在 Dotfiles 中添加判断逻辑。

同理,这个方法也可以用在 Codespaces 上。