Запуск условных сборок на движке приложения gcloud - PullRequest
0 голосов
/ 28 марта 2019

В моем cloudbuild.yml файле

steps:
- name: gcr.io/cloud-builders/npm
  args: ['install', 'app']
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy', 'app/${_GAE_APP_YAML}.yaml']

#Following will deploy only if the branch is develop to avoid having two testnet environments
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    [[ "$BRANCH_NAME" == "develop" ]] && gcloud app deploy app/${_GAE_APP_TESTNET_YAML}.yaml
timeout: 1800s

есть следующее: я хочу, чтобы первый и второй шаг выполнялись каждый раз.Однако я хочу, чтобы третий шаг выполнялся только в том случае, если BRANCH_NAME=develop

Все шаги выполняются успешно, если BRANCH_NAME=develop.Однако, когда я фиксирую master (BRANCH_NAME не разрабатывается), я получаю следующую ошибку:

Finished Step #1
Starting Step #2
Step #2: Already have image (with digest): gcr.io/cloud-builders/gcloud
Finished Step #2
ERROR
ERROR: build step 2 "gcr.io/cloud-builders/gcloud" failed: exit status 1 

Я попытался войти в контейнер на моем локальном компьютере и протестировать его следующим образом

$ docker run --rm -it --entrypoint bash gcr.io/cloud-builders/gcloud
root@ac7edd78bea4:/# export BRANCH_NAME=develop
root@ac7edd78bea4:/# echo $BRANCH_NAME
develop
root@ac7edd78bea4:/# [[ "$BRANCH_NAME" == "develop" ]] && echo "kousgubh"
kousgubh
/# [[ "$BRANCH_NAME" == "ddfevelop" ]] && echo "kousgubh" //Doesn't print anything

Итак, состояние кажется нормальным.Чего мне не хватает?

1 Ответ

0 голосов
/ 28 марта 2019

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

Быстрый ответ на ваш вопрос - немного изменить логику:

[[ "$BRANCH_NAME" != "develop" ]] || gcloud app deploy app/${_GAE_APP_TESTNET_YAML}.yaml

Это работает, потому что когда $BRANCH_NAME == "develop", первое выражение оценивается как true, а второе выражение не выполняется (|| - это короткое замыкание OR). Когда $BRANCH_NAME != "develop", первое выражение ложно, поэтому вычисляется второе выражение.

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