Continuous integration 如何在Github和VSTS持续集成中存储私钥?

Continuous integration 如何在Github和VSTS持续集成中存储私钥?,continuous-integration,azure-devops,Continuous Integration,Azure Devops,我在我的公共Github项目中使用了一个私有API密钥。我想把这把钥匙保密。目前,我正在使用一个环境变量来完成这项工作 我遇到的问题是,这个项目还集成到VSTS持续集成环境中。因此,当我的代码在那里运行时,密钥不可用,因为它只在我的本地计算机上 我已尝试使用Microsoft推荐的Azure Key Vault。但那个密码对我不起作用。我下载了他们推荐的Nuget软件包。但是,当我尝试使用此代码时,编译器不知道IWebHost或Startup是什么: public static IWebHost

我在我的公共Github项目中使用了一个私有API密钥。我想把这把钥匙保密。目前,我正在使用一个环境变量来完成这项工作

我遇到的问题是,这个项目还集成到VSTS持续集成环境中。因此,当我的代码在那里运行时,密钥不可用,因为它只在我的本地计算机上

我已尝试使用Microsoft推荐的Azure Key Vault。但那个密码对我不起作用。我下载了他们推荐的Nuget软件包。但是,当我尝试使用此代码时,编译器不知道IWebHost或Startup是什么:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((ctx, builder) =>
        {
            var keyVaultEndpoint = GetKeyVaultEndpoint();
            if (!string.IsNullOrEmpty(keyVaultEndpoint))
            {
                var azureServiceTokenProvider = new AzureServiceTokenProvider();
                var keyVaultClient = new KeyVaultClient(
                    new KeyVaultClient.AuthenticationCallback(
                        azureServiceTokenProvider.KeyVaultTokenCallback));
                        builder.AddAzureKeyVault(
                        keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                    }
                })
                .UseStartup<Startup>()
                .Build();
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx,构建器)=>
{
var keyVaultEndpoint=GetKeyVaultEndpoint();
如果(!string.IsNullOrEmpty(keyVaultEndpoint))
{
var azureServiceTokenProvider=新azureServiceTokenProvider();
var keyVaultClient=新的keyVaultClient(
新建KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback);
builder.AddAzureKeyVault(
keyVaultEndpoint、keyVaultClient、新的DefaultKeyVaultSecretManager();
}
})
.UseStartup()
.Build();
有人知道怎么做吗?

您可以先使用将私钥下载到代理机器,然后在VSTS构建中使用key by相关变量


假设Azure key vault中有一个priavte密钥
mykey
,在执行Azure key vault任务后,您可以使用变量
$(mykey)
获取密钥值。

KeyVault是正确答案。你说“没用”是什么意思?提供准确的细节。我用没有更新的内容更新了问题work@NikolayAdvolodkin使用Azure key vault存储您的Optivate密钥后,您需要先使用Azure key vault任务(docs.microsoft.com/en-us/vsts/pipelines/tasks/deploy/…)下载私钥,然后在你的VSTS构建中使用它。@MSFT你能提供那个URL吗?请,这个返回404 docs.microsoft.com/en-us/VSTS/pipelines/tasks/deploy/。我将在哪里本地下载密钥?这会解决与我上面提供的代码相关的编译器问题吗?@NikolayAdvolodkin对此表示抱歉。url应该是。我也在回答中添加了详细信息。下载密钥?似乎我没有控制代理,因为它似乎是由VST提供的,是吗?如果是这样的话,那么我就不能在代理上添加一个环境变量,然后我的问题就可以解决了吗?我甚至开始查看Azure Key Vault的原因是因为我认为我无法控制代理内部发生的事情……下载操作是由Azure Key Vault任务提供的,而不是代理本身。如果您使用的是Hosted agent,则无法控制它。此外,如果add secret变量满足您的需求,您还可以直接在构建定义中引用它()。