Это правильный способ написать оператор if..else в файле cloudbuild.yaml?

Я пытаюсь развернуть облачную функцию с помощью cloudbuild.yaml. Он отлично работает, если я не использую никаких условных операторов. Я столкнулся с ошибкой при выполнении файла cloudbuild.yaml с помощью оператора if conditional. Как правильно это написать. Ниже мой код:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  id: deploy
  args: 
   - '-c'
   - 'if [ $BRANCH_NAME != "xoxoxoxox" ] 
     then 
        [
          'functions', 'deploy', 'groups', 
          '--region=us-central1',
          '--source=.',
          '--trigger-http', 
          '--runtime=nodejs8', 
          '--entry-point=App', 
          '--allow-unauthenticated',
          '[email protected]'
        ]
     fi'
  dir: 'API/groups'

Где я делаю не так?


person Pritish    schedule 25.05.2020    source источник
comment
Отвечает ли это на ваш вопрос? Условный шаг сборки Google Cloud   -  person guillaume blaquiere    schedule 25.05.2020
comment
Отвечает частично. Я пробовал использовать ваше решение, но не смог решить проблему. Возможно, я бы не последовал твоему решению.   -  person Pritish    schedule 25.05.2020


Ответы (2)


На странице github https://github.com/GoogleCloudPlatform/cloud-sdk-docker, точка входа не установлена ​​в gcloud. Таким образом, вы не можете указать такие аргументы.

Хорошая практика для указания каталога - начинать с /workspace

Также правильный способ написания шага должен быть

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  id: deploy
  dir: '/workspace/API/groups'
  entrypoint: bash
  args: 
   - '-c'
   - |
      if [ $BRANCH_NAME != "xoxoxoxox" ] 
      then 
        gcloud functions deploy groups
        --region=us-central1
        --source=. 
        --trigger-http 
        --runtime=nodejs8 
        --entry-point=App
        --allow-unauthenticated
        [email protected]
      fi
person Tranvu Xuannhat    schedule 25.05.2020
comment
Здесь && не требуется, поскольку команда выполняется в sequence, но не chained. - person Pritish; 26.05.2020
comment
Это правильный код. Спасибо за ваше время. :) - person Pritish; 26.05.2020
comment
как я могу проверить, существует ли уже облачный планировщик? Чтобы моя облачная сборка не говорила ОШИБКА: (gcloud.scheduler.jobs.create.http) ALREADY_EXISTS:? - person M-sAnNan; 10.08.2020

Я не уверен, что ты сможешь это сделать.

В моем случае я использую селектор веток в триггере сборки облака, чтобы выбрать, какую ветвь (или тег) я хочу построить из шаблона.

person Olivier Lépine    schedule 25.05.2020