Сбой конвейера непрерывной интеграции с: Выход с кодом 1 - PullRequest
0 голосов
/ 16 мая 2018

В рамках моего конвейера CircleCi я хочу выполнить приведенную ниже команду.Идея состоит в том, что я утверждаю, существует ли файл, и если он существует, то я хочу выполнить еще несколько команд.Во время моего начального тестирования файл не существует, и я ожидал, что вся команда вернет 0. Любая подсказка о том, что не так?

      command: |
        [[ -e "stacks/docker-compose-${CIRCLE_BRANC}.yml" ]]
         && set -a && source /tmp/workspace/${CIRCLE_BRANCH}.env && docker-compose -f /tmp/workspace/docker-stack.yml -f "stacks/docker-compose-${CIRCLE_BRANC}.yml" config > /tmp/workspace/docker-stack.yml

1 Ответ

0 голосов
/ 16 мая 2018

Если файл не существует, то да, тест [[ -e "..." ]] вернет 1 (потому что он не прошел).

Если состояние выхода на 1 нарушает ваш конвейер, вы можете переписать командную строку, выполнив что-то вроде этого:

[[ ! -e "stacks/docker-compose-${CIRCLE_BRANC}.yml" ]]
|| { set -a && source /tmp/workspace/${CIRCLE_BRANCH}.env && docker-compose -f /tmp/workspace/docker-stack.yml -f "stacks/docker-compose-${CIRCLE_BRANC}.yml" config > /tmp/workspace/docker-stack.yml; }

Здесь логика инвертирована из вашего исходного сценария:

  • [[ ! -e "stacks/docker-compose-${CIRCLE_BRANC}.yml" ]]: если ваш файл не существует , мы завершаем работу с кодом выхода 0
  • иначе мы выполняем команду внутри следующего блока (код выхода 0, если блок успешен, иначе 1)
...