Git 在何处存储连续集成(CI)部署的私钥?

Git 在何处存储连续集成(CI)部署的私钥?,git,deployment,continuous-integration,Git,Deployment,Continuous Integration,我正在构建一个基于私有git存储库的持续集成部署。我的项目在resources目录中包含一个未版本化的PK文件。当我手动部署时,这可以正常工作,我确保私钥的副本位于任何工作站的路径上 现在我正在从存储库部署,我很想知道将密钥存储在哪里。这是一个私人回购,我想我可以只是版本的PK,但我宁愿没有,如果有其他选择 有什么窍门吗 更新:抱歉说得含糊不清,PK是一个与谷歌API一起使用的服务帐户。因此,它必须在运行时提供给JavaAPI库。例如: public void startGoogleDrive(

我正在构建一个基于私有git存储库的持续集成部署。我的项目在resources目录中包含一个未版本化的PK文件。当我手动部署时,这可以正常工作,我确保私钥的副本位于任何工作站的路径上

现在我正在从存储库部署,我很想知道将密钥存储在哪里。这是一个私人回购,我想我可以只是版本的PK,但我宁愿没有,如果有其他选择

有什么窍门吗

更新:抱歉说得含糊不清,PK是一个与谷歌API一起使用的服务帐户。因此,它必须在运行时提供给JavaAPI库。例如:

public void startGoogleDrive() {
    HttpTransport httpTransport = new NetHttpTransport();
    JacksonFactory jsonFactory = new JacksonFactory();
    GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(jsonFactory)
            .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
            .setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE))
            .setServiceAccountUser(userEmail)
            .setServiceAccountPrivateKeyFromP12File(
                    new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) // <- private key file
            .build();
}
public void startGoogleDrive(){
HttpTransport HttpTransport=新的NetHttpTransport();
JacksonFactory jsonFactory=新JacksonFactory();
GoogleCredential credential=新建GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(服务\帐户\电子邮件)
.setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE))
.setServiceAccountUser(用户电子邮件)
.SetServiceAccountPrivateKeyfromP12文件(

新的java.io.File(SERVICE\u ACCOUNT\u PKCS12\u File\u PATH))//是的,在Git存储库中保存凭据或其他敏感数据几乎总是一个坏主意

我所知道的对私钥等内容进行版本控制的唯一好做法是将它们放在策略的私钥存储库中,如、或。当配置管理系统守护程序运行时,它可以从存储库中创建或更新密钥。然后,如果不加选择地执行,即使这样也会导致密钥可能是无效的公共汽车


我个人不会将该密钥保存在项目的源代码存储库中。您可能会发现有人需要查看代码但无法访问该密钥的情况。理想情况下,该密钥应该单独部署到应用程序服务器,可以手动部署,也可以通过配置管理系统部署。

谢谢您修改后的答案和广告虎钳