【问题标题】:How to override .travis.yml environment variables from ruby script using travis client如何使用 travis 客户端从 ruby​​ 脚本覆盖 .travis.yml 环境变量
【发布时间】:2020-01-24 15:30:44
【问题描述】:

我正在使用 travis 客户端编写一个 ruby​​ 脚本来与我的 TravisCI 构建进行交互。我有一个工作 .travis.yml 文件,其中包含一系列加密的环境变量。我正在尝试使用覆盖 travis.yml 中现有加密环境变量之一的新 env_var 从我的脚本触发构建,但我无法覆盖 .yml 配置。

使用 CURL 进行 API 调用时,我可以成功覆盖环境变量。

body='{
  "request": {
    "branch":"master",
    "config": {
      "merge_mode": "deep_merge",
      "env": {
        "SOME_ENV_VAR_DEFINED_IN_YML": '"$some_new_value_for_the_old_key"'
      }
    }
  }
}'
curl -s -X POST \
   -H "Content-Type: application/json" \
   -H "Accept: application/json" \
   -H "Travis-API-Version: 3" \
   -H "Authorization: token MYSECRETTOKEN" \
   -d "$body" \
   https://api.travis-ci.com/repo/MYORG%2FMYREPO/requests

这是我试图在脚本中对客户端执行的操作,但无法做到。

我已经尝试获取 repo 并设置一些环境变量:

my_repo = Travis::Pro::Repository.find("MYREPO")
my_repo.env_vars.upsert("SOME_ENV_VAR_DEFINED_IN_YML", "some_new_value", public: true)

纳达。它在我可以在 travis ui 中看到的 repo 上设置 env var,但不会覆盖 .yml 配置。

我也尝试在我想要的构建上设置配置对象。

build_that_i_am_targeting.config["global_env"][index_of_env_var]="SOME_ENV_VAR_DEFINED_IN_YML=some_new_value"

还有 nada - 启动构建时,它会将全局环境变量重置为以前的版本。

我认为是相关文档的链接:https://github.com/travis-ci/travis.rb#build-environment-variables

我正在考虑使用客户端会话(就在文档上面的下方),但我觉得我缺少一些更简单的东西。非常感谢任何建议/想法!谢谢!

【问题讨论】:

    标签: ruby travis-ci travis-rb


    【解决方案1】:

    我知道这已经很晚了,但供将来参考。我不完全确定您要做什么,但我遇到了类似的问题,这里有两种可能的解决方案。

    1. 如果您的 curl 调用按您希望的方式工作,但您只需要将其转换为 ruby​​,您可以使用此在线“curl to ruby​​ 转换器”工具:https://jhawthorn.github.io/curl-to-ruby/

    2. 如果您想使用 travis ci 在本地将环境变量添加到您的 .travis.yml 文件中(然后在您准备好后将其推出),您可以执行以下操作:

    #your_ruby_script.rb
    env=some_value 
    travis_cmd = "travis encrypt MY_NEW_ENV=#{env} --add env.global"
    system(travis_cmd)
    

    这个答案有更多关于从 ruby​​ 调用 shell 命令的信息:How to call shell commands from Ruby

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2016-02-17
      • 2020-02-06
      • 2020-01-31
      • 1970-01-01
      • 2016-03-05
      • 2022-11-20
      • 2019-12-02
      • 1970-01-01
      相关资源
      最近更新 更多