Загружать артефакты CodeBuild *, если * они существуют - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть простая спецификация CodeBuild, которая определяет артефакты, которые будут загружены после запуска тестов:

artifacts:
  files:
    - cypress/**/*.png
  discard-paths: yes

Эти артефакты генерируются только в случае сбоя тестового действия (снимок экрана с ошибочным тестовым экраном)и успешно загружаются на S3.

. В случае успешного выполнения тестов файлы .png не будут созданы, а действие CodeBuild завершится неудачно:

[Container] 2018/09/21 20:06:34 Expanding cypress/**/*.png
[Container] 2018/09/21 20:06:34 Phase complete: UPLOAD_ARTIFACTS Success: false
[Container] 2018/09/21 20:06:34 Phase context status code: CLIENT_ERROR Message: no matching artifact paths found

Существует ли способ условнозагрузить файлы, если они существуют в buildspec ?

В качестве альтернативы я мог бы использовать s3 cli - в этом случае мне понадобился бы способ, чтобы легко получить доступ к имени корзины и ключу артефакта.

1 Ответ

0 голосов
/ 22 сентября 2018

Чтобы обойти это, я создаю файл-заполнитель, который соответствует шаблону glob, если сборка завершится успешно:

  post_build:
    commands:
      - if [ -z "$CODEBUILD_BUILD_SUCCEEDING" ]; then echo "Build failing, no need to create placeholder image"; else touch cypress/0.png; fi
artifacts:
  files:
    - cypress/**/*.png
  discard-paths: yes
...