Как установить учетные данные приложения в CI?

#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

но есть и несколько других вариантов:

https://buildkite.com/docs/pipelines/secrets

Комментарии:

1. Спасибо. Должен ли я добавить перехват агента как часть конвейера. файл yml? (извините, я очень новичок в этих вещах). Что мне точно нужно, так это сохранить пароль для входа в мое приложение, чтобы мои тесты автоматизации могли использовать учетные данные для входа в систему

2. Не беспокойтесь! Перехваты агента должны храниться на хосте, на котором запущен ваш агент. В Linux, например, вы обычно помещаете это в /etc/buildkite-agent/hooks/environment . Я изменю приведенный выше пример, чтобы продемонстрировать использование пароля в конвейерном yml.

3. Большое вам спасибо… Могу ли я добавить три разных пароля (для разных ролей) и получить к нему доступ следующим образом? В этом случае в конвейере будет разница. файл yml правильный?

4. Вы можете добавлять и использовать столько переменных среды, сколько захотите 🙂