Как переопределить переменные среды .travis.yml из скрипта ruby с помощью клиента travis
Я использую клиент travis для написания скрипта ruby для взаимодействия с моими сборками TravisCI. У меня есть рабочий файл.travis.yml с серией зашифрованных переменных env. Я пытаюсь запустить сборку из своего скрипта с новой переменной env_var, которая перезаписывает одну из существующих зашифрованных переменных env в travis.yml, но я не могу переопределить конфигурацию.yml.
При вызове API с использованием CURL я могу успешно переопределить 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
Это то, что я пытаюсь сделать с клиентом в сценарии, но не могу.
Я пробовал получить репо и установить несколько env vars следующим образом:
my_repo = Travis::Pro::Repository.find("MYREPO")
my_repo.env_vars.upsert("SOME_ENV_VAR_DEFINED_IN_YML", "some_new_value", public: true)
Нада. Он устанавливает env var в репо, которое я вижу в интерфейсе travis, но не отменяет конфигурацию.yml.
Я также пробовал установить объект конфигурации в нужной мне сборке.
build_that_i_am_targeting.config["global_env"][index_of_env_var]="SOME_ENV_VAR_DEFINED_IN_YML=some_new_value"
Также нада - при запуске сборки сбрасывает глобальные переменные окружения на предыдущую версию.
Ссылка на то, что я считал соответствующей документацией: https://github.com/travis-ci/travis.rb
Я подумывал об использовании клиентского сеанса (чуть ниже в документации), но мне кажется, что есть что-то более простое, чего мне не хватает. Любые предложения / идеи очень ценятся! Спасибо!
1 ответ
Я знаю, что это очень поздно, но на будущее. Я не совсем уверен, что вы пытаетесь сделать, но у меня была аналогичная проблема, и вот два возможных решения.
Если ваш вызов curl работает так, как вы хотите, но вам просто нужно преобразовать его в рубин, вы можете использовать этот онлайн-инструмент «конвертер изгиба в рубин»: https://jhawthorn.github.io/curl-to- Рубин/
Если вы хотите добавить переменную окружения в свой файл .travis.yml локально, используя travis ci (а затем вытолкнуть ее, когда будете готовы), вы можете сделать что-то вроде:
#your_ruby_script.rb env=some_value travis_cmd = "travis encrypt MY_NEW_ENV=#{env} --add env.global" system(travis_cmd)
В этом ответе есть дополнительная информация о вызове команд : оболочки из RubyКак вызывать команды оболочки из Ruby