# # #docker #google-cloud-platform #continuous-integration #gitlab-ci #google-cloud-run
Вопрос:
Я только что создал свой первый конвейер CI/CD в Gitlab, который создает контейнер docker для Next.js приложение и развертывает его в Google Cloud Run.
Мой cloudbuild.yaml:
# File: cloudbuild.yaml
steps:
# build the container image
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/inook-web', '.' ]
# push the container image
- name: 'gcr.io/cloud-builders/docker'
args: [ 'push', 'gcr.io/$PROJECT_ID/inook-web']
# deploy to Cloud Run
- name: "gcr.io/cloud-builders/gcloud"
args: ['run', 'deploy', 'inook-web', '--image', 'gcr.io/$PROJECT_ID/inook-web', '--region', 'europe-west1', '--platform', 'managed', '--allow-unauthenticated']
My .gitlab-ci.yml:
# File: .gitlab-ci.yml
image: docker:latest
stages: # List of stages for jobs, and their order of execution
- deploy-test
- deploy-prod
deploy-test:
stage: deploy-test
image: google/cloud-sdk
services:
- docker:dind
script:
- echo $GCP_SERVICE_KEY > gcloud-service-key.json # Google Cloud service accounts
- gcloud auth activate-service-account --key-file gcloud-service-key.json
- gcloud config set project $GCP_PROJECT_ID
- gcloud builds submit . --config=cloudbuild.yaml
Я получаю следующее сообщение об ошибке в конвейере CI/CD:
https://ibb.co/ZXLWrj1
Однако развертывание на самом деле завершается успешно в GCP: https://ibb.co/ZJjtXzG
Есть идеи, что я могу сделать, чтобы исправить ошибку конвейера?
Комментарии:
1. Я немного растерян. Могу я узнать, почему вы используете как cloudbuild, так и файлы gitlab ci yml.
2. мой репозиторий git размещен в GitLab, поэтому gitlab ci запускает Cloudbuild при каждом нажатии и развертывает контейнер docker для запуска в облаке. Есть ли способ напрямую запустить Cloudbuild из GitLab, не используя файл CI GitLab?
3. вы можете проверить эту ссылку : cloud.google.com/build/docs/automating-builds/… это полезно?
4. Как вы можете видеть,
gcloud builds submit
команда возвращает код выхода 1, что приводит к сбою конвейера. Похоже, это как-то связано с ведением журнала, так что, может быть, вы могли бы просто как-то отключить ведение журнала…5. Эй, @slauth, спасибо за ваше предложение. Однако я не вижу возможности отключить журналы ( cloud.google.com/sdk/gcloud/reference/builds/submit ). Только возможность изменить адрес корзины источника по умолчанию. Кроме того, журналы успешно создаются в ведре, и сборка также выполняется успешно, но я не знаю, почему я получаю код выхода 1.
Ответ №1:
Что сработало для меня, так это добавить пользовательское ведро для сборки gcloud, в которое будут отправляться журналы. Спасибо @slauth за то, что указал мне в правильном направлении.
Обновлена команда:
gcloud builds submit . --config=cloudbuild.yaml --gcs-log-dir=gs://inook_test_logs
Ответ №2:
Если вы добавите ведро в конце команды, то это сработает.
gcloud builds submit . --config=cloudbuild.yaml --gcs-log-dir=gs://my_bucket_name_on_gcp
Не забудьте создать корзину на GCP 😀
Комментарии:
1. Другой ответ буквально говорит то же самое. Какую ценность добавляет ваш ответ?