#continuous-integration #buildkite
#непрерывная интеграция #buildkite
Вопрос:
Как установить учетные данные приложения в buildkite, чтобы его можно было использовать как часть тестов?
Любая помощь?
заранее спасибо
Ответ №1:
Самый простой способ — сохранить их в связке среды агента, которая представляет собой файл сценария, который необходимо поместить на хост, на котором запущен агент, и вызывается непосредственно перед каждым заданием, выполняемым агентом:
# /etc/buildkite-agent/hooks/environment
set -eu
echo "--- :house_with_garden: Setting up the environment"
export APPLICATION_PASSWORD="xxx"
а затем использовать их в своих конвейерных командах из среды:
# .buildkite/pipeline.yml
steps:
- label: Run tests
command: ./run-tests --password="$$APPLICATION_PASSWORD"
Двойной доллар экранирует переменную для конвейерной загрузки, гарантируя, что пароль не интерполируется в YAML и затем не передается в buildkite.com . Затем они будут интерполированы, как только агент выполнит команду.
Вы также можете получить доступ $APPLICATION_PASSWORD
к своему скрипту, чтобы вообще не упоминать его в yaml.
Привязка среды агента работает лучше всего, если вы используете агенты с длительным сроком службы или используете что-то вроде elastic-ci-stack-for-aws, у которого есть привязка общей среды для такого рода вещей:
https://github.com/buildkite/elastic-ci-stack-for-aws#build-secrets
но есть и несколько других вариантов:
Комментарии:
1. Спасибо. Должен ли я добавить перехват агента как часть конвейера. файл yml? (извините, я очень новичок в этих вещах). Что мне точно нужно, так это сохранить пароль для входа в мое приложение, чтобы мои тесты автоматизации могли использовать учетные данные для входа в систему
2. Не беспокойтесь! Перехваты агента должны храниться на хосте, на котором запущен ваш агент. В Linux, например, вы обычно помещаете это в
/etc/buildkite-agent/hooks/environment
. Я изменю приведенный выше пример, чтобы продемонстрировать использование пароля в конвейерном yml.3. Большое вам спасибо… Могу ли я добавить три разных пароля (для разных ролей) и получить к нему доступ следующим образом? В этом случае в конвейере будет разница. файл yml правильный?
4. Вы можете добавлять и использовать столько переменных среды, сколько захотите 🙂