# #google-app-engine #google-cloud-platform #continuous-integration #gitlab #continuous-deployment
# # #google-app-engine #google-облачная платформа #непрерывная интеграция #gitlab #непрерывное развертывание
Вопрос:
Я использую gitlab и развертываю его в Google app Engine для своего приложения nodejs.
Доступ к службе Google добавляется как переменная в настройках gitlab
SERVICE_ACCOUNT_KEY:
{
"type": "service_account",
"project_id": "node-us",
"private_key_id": "",
"private_key": "",
"client_email": "gitlab-demo-service-account@node-us.iam.gserviceaccount.com",
"client_id": "",
"auth_uri": "",
"token_uri": "",
"auth_provider_x509_cert_url": "",
"client_x509_cert_url": ""
}
.gitlab-ci.yml
image: node:latest
cache:
paths:
- node_modules/
before_script:
- echo "deb http://packages.cloud.google.com/apt cloud-sdk-jessie main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list
- curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
- apt-get update
- apt-get -qq -y install google-cloud-sdk
deploy_production:
stage: deploy
environment: Production
only:
- master
script:
- echo $SERVICE_ACCOUNT_KEY > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud --quiet --project node-us app deploy app.yaml
after_script:
- rm /tmp/$CI_PIPELINE_ID.json
в моей корневой папке есть app.yaml
файл и .env
файл
На данный момент я тестировал поток, который работал нормально и успешно развернут в Google App Engine. (он не содержит никаких секретных ключей)
Однако я хочу, чтобы мои переменные env (содержащие секретные ключи) также игнорировались .gitignore
, чтобы не быть частью app.yaml
файла.
Как я могу передать свои секретные ключи env?
Комментарии:
1. Мне непонятно, что такое VC. Можете ли вы объяснить? Кроме того, я не понимаю вашу точку блокировки. Что вы хотите добавить, а что вы хотите игнорировать? в какое время? Почему? Если у вас есть пример, он будет идеальным!! Спасибо
2. Ok .. VC -> контролируемая версия, хотя и удалена, поскольку это может создавать путаницу. Как я могу передать значения секретного ключа переменной env. Это сработает, если я добавлю ее в корневую папку, однако это невозможно сделать, поскольку она содержит секреты, как я могу передать переменные env в Google App Engine. В какой момент : это то, что мне тоже нужно знать?
3. Я думал использовать medium.com/@brian . young.pro / … однако нет подключения к репозиторию для запуска сборки Google cloud с помощью gitlab
Ответ №1:
Не передавайте ее!
Используйте Secret Manager для передачи вашего секрета. Итак, в вашем репозитории используйте URI secret manager для ссылки на секрет с секретной версией. Таким образом, в вашем коде или в файлах app.yaml / .env нет секрета.
Если вам нужно обновить секрет, сделайте это вручную. Некоторые задачи сложно или дорого автоматизировать.
Примечание: статья, о которой вы упоминаете, была выпущена за 6 месяцев до выпуска Secret Manager (в начале 2020 года)