Как я могу вызвать команды gcloud из сценария оболочки на этапе сборки? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть автоматические c сборки, настроенные в Google Cloud, так что каждый раз, когда я отправляю sh в основную ветвь моего репозитория, создается новое изображение и отправляется в Реестр контейнеров Google.

Эти изображения быстро накапливаются, и мне не нужны все старые. Поэтому я хотел бы добавить шаг сборки, который запускает сценарий bash, который вызывает gcloud container images list-tags, зацикливает результаты и удаляет старые с gcloud container images delete.

. У меня есть сценарий, написанный и он работает на местном уровне. У меня возникают проблемы с выяснением, как запустить его как шаг в Cloud Builder.

Кажется, есть 2 варианта:

- name: 'ubuntu'
  args: ['bash', './container-registry-cleanup.sh']

На приведенном выше шаге в cloudbuild.yml я пытаюсь выполните команду bash в образе ubuntu. Это не работает, потому что команда gcloud не существует в этом образе.

- name: 'gcr.io/cloud-builders/gcloud'
  args: [what goes here???]

На приведенном выше шаге в cloudbuild.yml я пытаюсь использовать изображение gcloud, но так как "Аргументы переданы этому строителю будет передано gcloud напрямую ", я не знаю, как здесь вызвать мой bash скрипт.

Что я могу сделать?

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Вы можете настроить точку входа вашего шага сборки. Если вам нужен установленный gcloud, воспользуйтесь облачным компоновщиком gcloud и сделайте это

step:
  - name: 'gcr.io/cloud-builders/gcloud'
    entrypoint: "bash"
    args:
      - "-c"
      - |
          echo "enter 1 bash command per line"
          ls -la
          gcloud version
          ...
0 голосов
/ 24 марта 2020

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

В приведенном ниже примере показано, как настроить args для правильного выполнения выполнения.

steps:
- name: 'ubuntu'
  args: ['bash', './myscript.bash']
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/custom-script-test', '.']
images: ['gcr.io/$PROJECT_ID/custom-script-test']

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

Для вашего случая, в частности, есть этот другой ответ здесь , где указано, что вам понадобится переопределить конечную точку сборки на bash, чтобы скрипт выполнялся. Он обозначен следующим образом:

- name: gcr.io/cloud-builders/gcloud
  entrypoint: /bin/bash
  args: ['-c', 'gcloud compute instances list > gce-list.txt']

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

Дайте мне знать, помогла ли вам информация!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...