Единственный вариант передачи переменных среды в контейнер тестирования - использовать параметр --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
Готово, теперь мы можем использовать этот ключ внутри контейнера, чтобы делать то, что мы хотим.
Я также столкнулся с некоторыми проблемами при попытке расшифровать свои данные. Это руководство было невероятно полезным и решило мою проблему.