gitlab-runner exec docker - ввести ключ gpg - PullRequest
0 голосов
/ 05 июня 2018

Мне нужно запустить gitlab-runner локально с помощью команды exec и исполнителя docker.

Исполнитель Docker клонирует проект в контейнер, поэтому я начинаю с чистого листа.Чтобы запустить тесты, мне нужно расшифровать определенные файлы учетных данных.Обычно это делается на компьютере разработчика, используя закрытый ключ разработчика gpg.Но теперь мы находимся в контейнере, и я не могу найти способ ввести ключ gpg для разработчиков в контейнер тестирования.

Обычно имеет смысл передать закрытый ключ как переменную среды, но environment функция не поддерживается в команде gitlab-runner exec.

Было бы намного проще, если бы gitlab-runner просто скопировал файлы проекта в контейнер вместо того, чтобы делать новый клон проекта.Таким образом, разработчик расшифровывает учетные данные на хосте, и все в порядке.

Какие у меня есть варианты?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Единственный вариант передачи переменных среды в контейнер тестирования - использовать параметр --env для gitlab-runner.

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

export GPG_PRIVATE_KEY="$(gpg --export-secret-keys -a <KEY ID>)"

Затем мы можем запустить gitlab-runner следующим образом:

gitlab-runner exec docker test \
  --env GPG_PRIVATE_KEY="$GPG_PRIVATE_KEY" \
  --env GPG_PASSPHRASE="$GPG_PASSPHRASE"

Обратите внимание, что я также передал фразу-пароль впеременная окружения, потому что она мне нужна внутри контейнера для расшифровки моих данных.

Теперь я могу импортировать ключ в док-контейнер.Верхняя часть моего .gitlab-ci.yml выглядит следующим образом:

image: quay.io/mhart/alpine-node:8

before_script:
  - apk add --no-cache gnupg
  - echo "$GPG_PRIVATE_KEY" | gpg --batch --import --pinentry-mode loopback --no-tty

Готово, теперь мы можем использовать этот ключ внутри контейнера, чтобы делать то, что мы хотим.

Я также столкнулся с некоторыми проблемами при попытке расшифровать свои данные. Это руководство было невероятно полезным и решило мою проблему.

0 голосов
/ 05 июня 2018

Мне трудно представить. Почему вам нужно вызвать gitlab-runner с exec, но почему вы не можете сделать

   exec gitlab-runner sh
             export GPG_KEY=...
             ....
...