Как переопределить переменные среды .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 ответ

Я знаю, что это очень поздно, но на будущее. Я не совсем уверен, что вы пытаетесь сделать, но у меня была аналогичная проблема, и вот два возможных решения.

  1. Если ваш вызов curl работает так, как вы хотите, но вам просто нужно преобразовать его в рубин, вы можете использовать этот онлайн-инструмент «конвертер изгиба в рубин»: https://jhawthorn.github.io/curl-to- Рубин/

  2. Если вы хотите добавить переменную окружения в свой файл .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

Другие вопросы по тегам