Использование секретных ключей API на travis-ci

86

Я хотел бы использовать travis-ci для одного из проекты.

Проект представляет собой оболочку API, поэтому многие из тестов полагаются на использование секретных ключей API. Чтобы проверить локально, я просто храню их как переменные среды. Какой безопасный способ использовать эти ключи на Travis?

Теги:
api-key
continuous-integration
travis-ci

4 ответа

88
Лучший ответ

Travis имеет функцию шифрования переменных среды ( "Шифрование переменных окружения" ). Это можно использовать для защиты ваших секретных ключей API. Я успешно использовал это для своего ключа API Heroku.

Все, что вам нужно сделать, это установить драгоценный камень travis, зашифровать нужную строку и добавить зашифрованную строку в .travis.yml. Шифрование действует только для одного репозитория. Команда travis получает ваш открытый ключ для вашего репо и может затем расшифровать строку во время сборки.

gem install --user travis
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo

Это дает вам следующий результат:

Please add the following to your .travis.yml file:

  secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g="
  • 11
    Не забудьте документировать, какие переменные вы используете и почему, потому что после их шифрования их может восстановить только тот, у кого есть оригинальные ключи.
  • 1
    Похоже, что более новые версии драгоценного камня Travis предпочитают располагать свои аргументы в обратном порядке: travis encrypt [args..] [options] , т.е. вы захотите сделать travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo . Если сначала указать параметры, а данные зашифровать последними, появится предупреждение.
Показать ещё 10 комментариев
3

согласно this в документации travis ci, он сказал, что:

Если у вас установлены клиенты командной строки Heroku и Travis CI, вы можете получить свой ключ, зашифровать его и добавить в свой .travis.yml, выполнив следующую команду в каталоге проекта:

travis encrypt $(heroku auth:token) --add deploy.api_key

обратитесь к следующему руководству по установке клиента heroku в соответствии с вашей ОС

  • 0
    Я просто хочу проверить: ключ, который он добавляет к вашему файлу, безопасен для загрузки в систему контроля версий, верно?
2

Вы также можете определить секретные переменные в настройках репозитория:

Переменные, определенные в настройках репозитория, одинаковы для всех сборников, а при перезагрузке старой сборки используются последние значения. Эти переменные автоматически не доступны для forks.

Определите переменные в настройках репозитория, которые:

  • отличаются для каждого репозитория.
  • содержат конфиденциальные данные, такие как сторонние учетные данные.

Чтобы определить переменные в настройках репозитория, убедитесь, что вы вошли в систему, перейдите к соответствующему репозиторию, выберите "Настройки" в меню cog и нажмите "Добавить новую переменную" в разделе "Переменные среды".

  • 1
    Не понял, как создавать секретные переменные. При поиске, результаты объясняют, как шифровать.
  • 0
    @XedinUnknown Это можно использовать для секретных переменных. По ссылке: «По умолчанию значение этих новых переменных среды скрыто из строки экспорта в журналах. Это соответствует поведению зашифрованных переменных в вашем .travis.yml. Переменные хранятся в наших системах в зашифрованном виде, и расшифровывать при создании сценария сборки. "
0

Используйте другой набор ключей API и делайте это так же. Ваш блок travis будет настроен для вашего запуска сборки, а затем полностью снесен после завершения сборки. У вас есть root-доступ к вашему ящику во время сборки, поэтому вы можете делать с ним все, что хотите.

  • 4
    Что вы подразумеваете под "сделать так же"? Мне не очень нравится идея хранить ключи API в самом репозитории (то есть в файле .travis.yml), но, похоже, нет другого способа настройки переменных среды на travis.
  • 0
    Переменная env будет зашифрована с помощью открытого ключа, поэтому только владелец секретного ключа может расшифровать его. Вы не должны использовать важный токен. В моем случае я использовал тот, который Travis уже имел для GitHub. Это сработало довольно хорошо, и изнутри github я могу отозвать этот токен всякий раз, когда чувствую, что Трэвис рискует. Наличие зашифрованного токена в моем репо не заставляет меня плохо спать. github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml

Ещё вопросы

Сообщество Overcoder
Наверх
Меню