Сбой конвейера Gitlab, даже несмотря на то, что развертывание произошло в GCP

# # #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. Другой ответ буквально говорит то же самое. Какую ценность добавляет ваш ответ?