我正在使用 travis 客户端编写一个 ruby 脚本来与我的 TravisCI 构建进行交互。我有一个工作 .travis.yml 文件,其中包含一系列加密的环境变量。我正在尝试使用覆盖 travis.yml 中现有加密环境变量之一的新 env_var 从我的脚本触发构建,但我无法覆盖 .yml 配置。
使用 CURL 进行 API 调用时,我可以成功覆盖 env var。
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
我正在考虑使用客户端会话(就在文档上面的下方),但我觉得我缺少一些更简单的东西。非常感谢任何建议/想法!谢谢!