0

我正在开发一个 Android 项目。我有一些受版本控制的文件 git-crypt 为我加密它们。其中一些内容对于在运行构建过程之前进行解密很重要。

在我的笔记本电脑上构建项目完全没有问题。问题出在 CI 方面。当我将代码推送到 Origin 时,管道(我正在使用 Azure)触发管道,几秒钟后,构建失败。那是因为构建系统正在寻找我在 keys.properties 文件中的信息并且它是加密的。

根据我的理解,git-crypt 使用公钥/私钥来加密/解密文件。公钥已经在版本控制下,root/.git-crypt/keys/default/0/7F64F6C566153F29E4D9D44070C2A1QW029CE338.gpg。因此,我认为我需要将私钥移动到某个地方。我对吗?如果我是对的,那么我的问题是把它放在哪里?它仍然在计算机的根目录下(CI 上的 macOS Image/VM)还是我可以将它放在项目的根目录下?

注意:Azure 允许我在其库下上传安全文件,然后我可以从 azure-piplines.yaml 文件中引用它。

4

1 回答 1

0

放在哪里?

根据我对 git-crypt 和 azure devops 的理解,与将私钥存储在 PC 的根目录中相比,我建议您将其放在项目的根目录下。

因为如果将其存储在 PC 的根目录下,则在使用Private agent运行管道时不会有任何问题。但是,如果有人使用托管代理但私钥在本地,问题是什么。如您所知,托管代理是位于云端的代理,它的加载非常动态。因此,很难从本地计算机获取私钥。

总之,将其保存在存储库中消除了将其存储在其他地方并在开发人员之间使用它的麻烦。

但是,以上只是存储在 PC 根目录和存储在项目根目录之间的建议选择。


不过,如果将私钥放在项目的根目录中会很方便。

但是关于个人建议和信息安全,我强烈支持你最后提到的方法:将私钥存储在库中,并在构建/发布期间引用它。Azure DevOps 库以安全的方式存储机密,并在需要时使用它们,而不会让任何人看到。

于 2020-02-03T07:16:34.487 回答