Артефакт из CodeBuild нельзя развернуть с помощью CodeDeploy
С помощью CodeBuild я компилирую свое приложение SpringBoot и помещаю полученный файл в папку с именем deploy/
, В моем buildspec.yml
в конце я предоставляю:
artifacts:
files:
- deploy/*
Когда я подключаю это к CodePipeline, это создает файл zip в S3. Но проблема в том, что этот zip-файл содержит корневую папку, т.е. deploy
, Итак, структура zip-файла:
deploy.zip
- deploy/
- appspec.yml
- app.jar
- ...
Это приводит к проблеме, что CodeDeploy не может найти appspec.yml
, потому что это не смотрит в папку развертывания. Я пытался преодолеть это, предоставляя zip-файл в качестве артефакта в конце процесса сборки, но затем в конвейере он просто снова архивируется...
Любая идея, как решить эту проблему, будет высоко ценится.
2 ответа
В разделе артефактов вы можете добавить новый флаг, который называется base-directory
указать базовый путь для вашего пакета артефактов. Это позволит вам обрезать deploy/
выход из ваших артефактов без потери остальной части структуры под ним.
artifacts:
files:
- **/*
base-directory: deploy
http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
Можете добавить discard-paths: yes
artifacts:
files:
- deploy/*
discard-paths: yes
Имейте в виду, что он отбрасывает ВСЕ пути, включая подкаталоги
Источник: http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html