Несколько команд в одном шаге сборки в Google Cloud Builder - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу запустить наш автоматизированный бэкэнд-тест в среде Google Cloud Builder.Однако, естественно, я столкнулся с необходимостью установки различных зависимостей и предварительных условий в Cloud Builder, чтобы наш финальный тестовый прогон (php tests/run) мог работать.

Вот мой текущий cloudbuild.yaml:

steps:

  - name: 'ubuntu'
    args: ['bash', './scripts/install-prerequisites.sh', '&&', 'composer install -n -q --prefer-dist', '&&', 'php init --overwrite=y', '&&', 'php tests/run']

В настоящее время объединение нескольких команд не работает.Единственное, что исполняется, это часть bash ./scripts/install-prerequisites.sh.Как получить, чтобы все эти команды выполнялись по порядку?

Ответы [ 3 ]

2 голосов
/ 26 июня 2019

Более читабельный способ запуска сценария может состоять в использовании синтаксиса прорыва (источник: освоение синтаксиса сборки облака )

steps:
- name: 'ubuntu'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    ./scripts/install-prerequisites.sh \
    && composer install -n -q --prefer-dist \
    && php init --overwrite=y \
    && php tests/run

Однако это работает только в том случае, если ваш образ шага сборкиустановлен соответствующий deps (php, composer).

1 голос
/ 14 мая 2019

На данный момент у вас есть 2 варианта для достижения этой цели:

  1. создайте сценарий, содержащий последовательность команд, которую вы хотите, и вызовите сценарий напрямую:
# cloudbuild.yaml
steps:
  - name: 'ubuntu'
    args: ['./my-awesome-script.sh']
# my-awesome-script.sh
/usr/bin/env/bash

set -eo pipefail

./scripts/install-prerequisites.sh
composer install -n -q --prefer-dist
php init --overwrite=y
php tests/run
Звоните bash -c со всеми командами, которые вы хотите выполнить:
steps:
  - name: 'ubuntu'
    args: ['bash', '-c', './scripts/install-prerequisites.sh && composer install -n -q --prefer-dist && php init --overwrite=y && php tests/run']
0 голосов
/ 26 апреля 2019

См:

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

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

Шаг зависит от каждого идентификатора в его waitFor и не будет запущен, пока каждая зависимость не будет успешно завершена.

Таким образом, вы только отделяете команду как каждый шаг.

Вот так.

steps:
  - name: 'ubuntu'
    args: ['bash', './scripts/install-prerequisites.sh']
    id: 'bash ./scripts/install-prerequisites.sh'
  - name: 'ubuntu'
    args: ['composer', 'install', '-n', '-q', '--prefer-dist']
    id: 'composer install -n -q --prefer-dist'
  - name: 'ubuntu'
    args: ['php', 'init', '--overwrite=y']
    id: 'php init --overwrite=y'
  - name: 'ubuntu'
    args: ['php', 'tests/run']
    id: 'php tests/run'

Кстати, можно ли с помощью образа ubuntu запустить команду php и composer?

Я думаю, что вы должны использовать или собрать образ докера, который может запускать команды php и composer.

Образ докера композитора здесь .

steps:
- name: 'gcr.io/$PROJECT_ID/composer'
  args: ['install']

...