【问题标题】:How to set application credential details in CI?如何在 CI 中设置应用程序凭据详细信息?
【发布时间】:2020-12-12 14:19:35
【问题描述】:

如何在 buildkite 中设置应用程序凭据详细信息,以便可以将其用作测试的一部分?

有什么帮助吗?

提前致谢

【问题讨论】:

    标签: continuous-integration buildkite


    【解决方案1】:

    最简单的方法是将它们存储在 agent environment hook 中,这是您需要放在运行代理的主机上的脚本文件,并且在代理运行的每个作业之前调用:

    # /etc/buildkite-agent/hooks/environment
    
    set -eu
    echo "--- :house_with_garden: Setting up the environment"
    
    export APPLICATION_PASSWORD="xxx"
    

    然后在环境中的管道命令中使用它们:

    # .buildkite/pipeline.yml
    
    steps:
    - label: Run tests
      command: ./run-tests --password="$$APPLICATION_PASSWORD"
    

    双美元对管道上传的变量进行转义,确保密码没有插入到 YAML 中,然后提交给 buildkite.com。一旦代理运行命令,它将被插入。

    您还可以在脚本中访问 $APPLICATION_PASSWORD,以避免在 yaml 中提及它。

    如果您正在运行长期存在的代理,或者使用类似 elastic-ci-stack-for-aws 之类的东西,代理环境挂钩效果最好,它具有用于此类事情的共享环境挂钩:

    https://github.com/buildkite/elastic-ci-stack-for-aws#build-secrets

    但也有其他一些选择:

    https://buildkite.com/docs/pipelines/secrets

    【讨论】:

    • 谢谢。我应该将代理挂钩添加为 pipeline.yml 文件的一部分吗? (对不起,我对这些东西很陌生)。我真正需要的是存储我的应用程序的登录密码,以便我的自动化测试可以使用凭据登录
    • 别担心!代理挂钩应存储在运行代理的主机上。例如,在 Linux 上,您通常会将其放在 /etc/buildkite-agent/hooks/environment 中。我将修改上面的示例以演示在管道 yml 中使用密码。
    • 非常感谢...我可以添加三个不同的密码(用于不同的角色)并像这样访问它吗?那样的话,pipeline.yml文件会有区别吧?
    • 您可以添加和使用任意数量的环境变量 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2015-06-27
    • 2023-03-05
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多