Как я могу заставить AWS CodePipeline перейти к следующему этапу даже после сбоя действия

#amazon-web-services #aws-codepipeline #aws-codebuild

Вопрос:

Один из этапов в моем конвейере CI/CD структурирован следующим образом:

введите описание изображения здесь

Действие CodeBuild просто запускает некоторые тесты с использованием Newman и выводит файл отчета JUnit. Затем функция Lambda выполняет более глубокий анализ выполнения и отправляет некоторые данные на внешний шлюз API.

Если какой-либо из тестов завершается неудачно, действие сборки кода помечается как «сбой», и следующее действие (Лямбда) не запускается.

Проблема в том, что мне нужно собирать и анализировать эти тестовые данные даже в случае сбоя теста.

Мне удалось решить проблему простым решением: добавить | true в конец командной строки внутри файла buildspec.yml сборки кода, например:

 build:
  commands:
    - newman run ... | true
 

Это работало в течение некоторого времени, но теперь есть еще одна проблема, я больше не могу управлять файлом buildspec.yml (также не могу управлять запущенным им приложением). Но у меня есть доступ к облачной информации, которая создает этот конвейер.

Есть ли в любом случае возможность настроить сборку кода так, чтобы она всегда выходила со статусом «Успешно»? Или, может быть, какая-то конфигурация на самой кодовой линии?

Комментарии:

1. Вы находитесь в затруднительном положении, конвейер остановит обработку, если она выйдет из строя, и я думаю, что это так, как задумано, а не настраивается. Если бы у вас был доступ к спецификации сборки, вы могли бы вызвать свою лямбду в блоке «наконец», который будет выполняться, даже если предыдущие команды завершатся неудачно — см. docs.aws.amazon.com/codebuild/latest/userguide/. … Если у вас есть облачная информация конвейера, вы можете написать встроенную спецификацию сборки, создав таким образом новую спецификацию сборки, но это может не подойти.