Артефакт из CodeBuild нельзя развернуть с помощью CodeDeploy

С помощью CodeBuild я компилирую приложение SpringBoot и помещаю полученный файл jar в папку с именем deploy/. В моем buildspec.yml в конце я привожу:

artifacts:
   files:
    - deploy/*

Когда я подключаю это к CodePipeline, в S3 создается zip-файл. Но проблема в том, что этот zip-файл содержит корневую папку, то есть deploy. Итак, структура zip-файла:

deploy.zip
  - deploy/
     - appspec.yml
     - app.jar
     - ...

Это приводит к тому, что CodeDeploy не может найти appspec.yml, потому что он не просматривает папку развертывания. Я пытался преодолеть это, предоставляя zip-файл в качестве артефакта в конце процесса сборки, но затем в конвейере он просто снова заархивируется ..

Любая идея, как решить эту проблему, будет принята с благодарностью.


person rldw    schedule 12.01.2017    source источник


Ответы (2)


Есть новый флаг, который вы можете добавить в раздел артефактов под названием base-directory, чтобы указать базовый путь для вашего пакета артефактов. Это позволит вам обрезать deploy/ путь из ваших артефактов без потери остальной структуры внизу.

artifacts:
  files:
    - **/*
  base-directory: deploy

http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html

person Bri    schedule 16.02.2017
comment
Этот ответ работал только в том случае, если значения файлов являются строковыми, например: - 'deploy / *' - person Vingtoft; 14.08.2018

Вы можете добавить discard-paths: yes

artifacts:
  files:
    - deploy/*
  discard-paths: yes

Имейте в виду, что он отбрасывает ВСЕ пути, включая подкаталоги.

Источник: http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html

person ricka    schedule 22.01.2017