工作流程使用 git-secret
非常简单:
- 初始化
git-secret
- 添加所有用户 。
- 添加所有机密文件并确保这些文件通过
.gitignore
被忽略 。 - 加密文件 。
- 如果团队其他成员对文件进行更改 , 则需要解密文件→更新文件→再次提交加密文件
- 如果对解密的文件进行更改 , 修改完需要再次重新进行加密 。
流程中的挑战从流程的角度 , 一起来看看在过程中可能遇到的一些困难和挑战 , 以及如何处理解决 。
更新机密更新机密时 , 请确保先解密文件 , 从而避免使用可能仍存在本地的旧文件 。可以通过检查最新的 main 分支并运行
git secret reveal
, 来获得最新版本的机密文件 。也可以使用 post-merge
Git hook 自动执行此操作 , 不过要注意覆盖本地机密文件的风险哦 。代码审查和合并冲突由于无法对加密文件进行很好的区分 , 因此当涉及机密时代码审查变得更加困难 。这是可以尝试使用 GitLab 进行审查 , 首先检查
.gitsecret/paths/mapping.cfg
文件的差异 , 在 UI 中查看哪些文件已更改 。【下 git-secret:在 Git 存储库中加密和存储密钥】此外 , 可以根据以下步骤来查看:
- 检查
main
分支 。
- 通过
git secret reveal -f
解密文件
- 查看
feature-branch
.
- 运行
git secret changes
来查看main
的解密文件和feature-branch
中加密文件之间的差异 。
本地 git-secret 和 gpg 设置当团队的所有人员将
git-secret
安装在本地 , 并且使用他们自己的 gpg
密钥 , 这也意味着团队的成本会随之增加 , 原因如下:- 新加入开发团队的人员需要:
- 本地安装
git-secret
(*) - 在本地安装和设置
gpg
(*) - 创建
gpg
密钥对
- 本地安装
- 必须由所有其他团队成员 (*) 添加公钥 。
- 必须通过添加密钥的用户
git secret tell
。 - 机密需要重新加密 。
- 所有其他团队成员(*) 都需要删除公钥 。
- 通过
git secret killperson
删除密钥的用户 。 - 机密需要重新加密 。
git-secret
和gpg
版本保持最新 , 避免遇到任何兼容性问题 。作为替代方案 , 也可以通过 Docker 处理 , 而上述步骤中标注(*) 则可以省去 , 也就是不需要设置本地的 git-secret
和gpg
。为了更加便捷 , 将存储库中每个开发人员的公共
gpg
密钥放在 .dev/gpg-keys/
, 而私钥命名为 secret.gpg
并放在代码库的根目录中 。在此设置中 ,
secret.gpg
还必须被添加到 .gitignore
文件中 。# File: .gitignore#...vendor/secret.gpg
然后可以使用make
目标简化导入:# gpgDEFAULT_SECRET_GPG_KEY?=secret.gpgDEFAULT_PUBLIC_GPG_KEYS?=.dev/gpg-keys/*.PHONY: gpggpg: ## Run gpg commands. Specify the command e.g. via ARGS="--list-keys"$(EXECUTE_IN_APPLICATION_CONTAINER) gpg $(ARGS).PHONY: gpg-importgpg-import: ## Import a gpg key file e.g. via GPG_KEY_FILES="/path/to/file /path/to/file2"@$(if $(GPG_KEY_FILES),,$(error GPG_KEY_FILES is undefined))"$(MAKE)" -s gpg ARGS="--import --batch --yes --pinentry-mode loopback $(GPG_KEY_FILES)".PHONY: gpg-import-default-secret-keygpg-import-default-secret-key: ## Import the default secret key"$(MAKE)" -s gpg-import GPG_KEY_FILES="$(DEFAULT_SECRET_GPG_KEY)".PHONY: gpg-import-default-public-keysgpg-import-default-public-keys: ## Import the default public keys"$(MAKE)" -s gpg-import GPG_KEY_FILES="$(DEFAULT_PUBLIC_GPG_KEYS)" .PHONY: gpg-initgpg-init: gpg-import-default-secret-key gpg-import-default-public-keys ## Initialize gpg in the container, i.e. import all public and private keys
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vue中使用Switch开关用来控制商品的上架与下架情况、同时根据数据库商品的状态反应到前台、前台修改商品状态保存到数据库
- 奥运会2008是哪个国家
- 火车硬卧行李放哪
- 南京高铁在哪个区
- 立秋分上午和下午吗
- 恋爱时不会主动找你聊天的星座女
- 松茸常温下可以保存多久
- 2023年10月5日是下葬的黄道吉日吗 2023年10月5日适合下葬吗
- 平鲁油菜花在哪里
- 24奥运会在哪个国家