Как сохранить вывод текста шага сборки облака Google в файл - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь использовать Google Cloud build. На одном шаге мне нужно получить список всех запущенных экземпляров вычислений.

- name: gcr.io/cloud-builders/gcloud
  args: ['compute', 'instances', 'list']

и работает нормально. Проблема начинается, когда я пытался сохранить вывод в файл


Пробная версия 1 : сбой

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

Пробная версия 2 : сбой

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

Пробная версия 3 : сбой

- name: gcr.io/cloud-builders/gcloud
  args: >
      compute instances list > gce-list.txt

Пробная версия 4 : сбой

- name: gcr.io/cloud-builders/gcloud
  args: |
      compute instances list > gce-list.txt

ОБНОВЛЕНИЕ: 2018-09-04 17: 50

Пробная версия 5 : сбой

  1. Создание образа gcloud на основе Ubuntu
  2. Использовал это изображение для запуска файла пользовательского скрипта 'list-gce.sh'
  3. list-gce.sh звонки gcloud compute instances list

Для более подробной информации вы можете проверить эту суть: https://gist.github.com/mahmoud-samy/e67f141e8b5d553de68a58a30a432ed2

К сожалению, я получил эту странную ошибку:

ред. 1

ОШИБКА: (gcloud) нераспознанные аргументы: список (вы имели в виду «список»?)

ред. 2

ОШИБКА: (gcloud) нераспознанные аргументы: --version (вы имели в виду «--version»?)

Любые предложения или ссылки?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

В дополнение к другим ответам, чтобы сделать cmd > foo.txt, вам необходимо переопределить точку входа сборки в bash (или sh):

- name: gcr.io/cloud-builders/gcloud
  entrypoint: /bin/bash
  args: ['-c', 'gcloud compute instances list > gce-list.txt']
0 голосов
/ 03 сентября 2018

Эти команды не выполняются в оболочке, поэтому такие операции оболочки, как конвейеры (|) и перенаправления (>), недоступны.


Обход

Используйте контейнер gcloud, который имеет оболочку. Контейнер gcr.io/cloud-builders/gcloud должен иметь bash, поскольку он в конечном итоге получен из образа Ubuntu 16.04.

В своей последовательности задач Cloud Build выполните сценарий оболочки, который выполняет для вас вызовы gcloud и перенаправляет вывод в файл. Это имеет некоторые наблюдения:

  • Вам нужно будет хранить скрипт оболочки где-нибудь разумным; возможно, в вашем исходном репозитории, поэтому он становится доступным для сборки.
  • Контейнер gcloud все еще можно использовать, так как это обеспечит доступность инструментов Google Cloud SDK для вашего сценария. Вам нужно будет переопределить entrypoint в манифесте Cloud Build, чтобы оно было /bin/bash, или какой-либо другой оболочки, и передать путь к вашему сценарию в качестве аргумента.
  • Поскольку DazWilkin определяет в комментарии , учетной записи службы Cloud Build также потребуется разрешение compute.instances.list для отображения экземпляров.

Каталог /workspace монтируется во все контейнеры Cloud Build, и его содержимое будет сохраняться и доступно на последующих этапах сборки. Если на последующих этапах сборки требуется вывод команды gcloud или постобработанной версии, вы можете написать ее здесь.

Относительно Документация Google .

...