如何以及在何处与 CI 共享 Git-Crypt 的私钥以解密加密文件?
How and where to share the private key of Git-Crypt with CI in order to decrypt encripted files?
我正在做一个 Android 项目。我在版本控制下有一些文件,git-crypt 为我加密它们。其中一些内容很重要,需要在 运行 构建过程之前解密。
我在笔记本电脑上构建项目完全没有问题。问题出在 CI 方面。当我将代码推送到 Origin 时,管道(我使用的是 Azure)触发管道,几秒钟后,构建失败。那是因为构建系统正在寻找我在 keys.properties 文件中的信息并且它是加密的。
根据我的理解,git-crypt 使用 public/private 密钥来 encrypt/decrypt 文件。 public 键已经在版本控制之下,root/.git-crypt/keys/default/0/7F64F6C566153F29E4D9D44070C2A1QW029CE338.gpg。因此,我认为我需要将私钥移动到某个地方。我对吗?如果我是对的,那么我的问题是把它放在哪里?还是放在电脑的根目录下(macOS Image/VM on CI)还是我可以放到项目的根目录下?
注意:Azure 允许我在其库下上传安全文件,然后我可以从 azure-piplines.yaml 文件中引用它。
where to put it?
根据我对git-crypt和azure devops的理解,相对于将私钥存储在PC的根目录下,我建议您将其放在项目的根目录下。
因为如果你将它存储在 PC 的根目录下,当你 运行 使用 Private agent 的管道时,它不会有任何问题。但是,如果有人使用 Hosted agent 但私钥在本地,问题是什么。如您所知,Hosted agent 是位于云端的代理,它的加载非常动态。因此,很难从本地计算机获取私钥。
一言以蔽之,将其保存在存储库中可以避免将其存储在其他地方并在开发人员之间使用它的麻烦。
不过,以上只是存储在PC根目录和存储在项目根目录之间的建议选择。
不过,如果把私钥放在项目根目录下会方便很多。
但是关于个人建议和信息安全,我强烈支持你最后提到的方法:将私钥存储在库中,并在[=32]期间引用它=]. Azure DevOps 库以安全的方式存储机密,并在需要时使用它们,而不会让任何人看到。
我正在做一个 Android 项目。我在版本控制下有一些文件,git-crypt 为我加密它们。其中一些内容很重要,需要在 运行 构建过程之前解密。
我在笔记本电脑上构建项目完全没有问题。问题出在 CI 方面。当我将代码推送到 Origin 时,管道(我使用的是 Azure)触发管道,几秒钟后,构建失败。那是因为构建系统正在寻找我在 keys.properties 文件中的信息并且它是加密的。
根据我的理解,git-crypt 使用 public/private 密钥来 encrypt/decrypt 文件。 public 键已经在版本控制之下,root/.git-crypt/keys/default/0/7F64F6C566153F29E4D9D44070C2A1QW029CE338.gpg。因此,我认为我需要将私钥移动到某个地方。我对吗?如果我是对的,那么我的问题是把它放在哪里?还是放在电脑的根目录下(macOS Image/VM on CI)还是我可以放到项目的根目录下?
注意:Azure 允许我在其库下上传安全文件,然后我可以从 azure-piplines.yaml 文件中引用它。
where to put it?
根据我对git-crypt和azure devops的理解,相对于将私钥存储在PC的根目录下,我建议您将其放在项目的根目录下。
因为如果你将它存储在 PC 的根目录下,当你 运行 使用 Private agent 的管道时,它不会有任何问题。但是,如果有人使用 Hosted agent 但私钥在本地,问题是什么。如您所知,Hosted agent 是位于云端的代理,它的加载非常动态。因此,很难从本地计算机获取私钥。
一言以蔽之,将其保存在存储库中可以避免将其存储在其他地方并在开发人员之间使用它的麻烦。
不过,以上只是存储在PC根目录和存储在项目根目录之间的建议选择。
不过,如果把私钥放在项目根目录下会方便很多。
但是关于个人建议和信息安全,我强烈支持你最后提到的方法:将私钥存储在库中,并在[=32]期间引用它=]. Azure DevOps 库以安全的方式存储机密,并在需要时使用它们,而不会让任何人看到。