【问题标题】:Secrets in Azure DevOps builds (dotnet core)Azure DevOps 构建中的秘密(dotnet 核心)
【发布时间】:2018-12-06 14:46:52
【问题描述】:

我的项目中有许多测试作为构建的一部分运行。其中一些测试是集成测试,需要一组用户名/密码凭据才能运行测试。

我想将这些凭据保留在源代码之外,因此在我的本地计算机上我已将它们设置为用户机密,而在服务器上它们是环境变量。在这种安排下,部署工作得很好。

我的问题是在构建过程中运行测试。没有为测试提供任何登录凭据,因此因身份验证问题而失败。如何在不将它们添加到 appsettings.json 文件的情况下提供这些值?

我正在运行一个 dotnet 核心项目并拥有一个标准的 Azure DevOps 构建模板。

谢谢!

【问题讨论】:

    标签: .net-core azure-devops


    【解决方案1】:

    在构建中声明的非秘密变量会自动转换为构建代理上的环境变量。

    秘密变量被有意不转换为环境变量,但您可以添加适合您的平台(Bash、Powershell 等)的命令行或脚本任务,并通过传递您的秘密作为脚本的参数。

    【讨论】:

    • 我遇到的问题是因为我已将它们标记为秘密值吗?如果我以纯文本形式存储它们,它们会被提取吗?
    • 是的。句点替换为下划线,因此名为 Foo.Bar 的变量将是名为 Foo_Bar 的环境变量。
    • 那行不通。如果我的 appsettings 组类似于 { "foo":{ "bar": { "password": "baz" } } } 那么密钥是否需要是 "foo.bar.password" 和 "baz" 的值明文?抱歉有点菜鸟,但这一切都被我倾倒在我身上,以找出 CI/CD 管道。我可以看到它在发布方面一切正常,但需要先让它运行这些该死的测试!
    • 知道了!我需要在设置名称中使用双下划线而不是点。谢谢!
    • @DalePalmer 很高兴我能帮上忙!
    猜你喜欢
    • 2020-02-18
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2019-11-08
    • 2021-05-22
    • 2018-06-18
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多