2017-01-13 6 views
2

Я пытаюсь получить CodePipeline для извлечения моего кода из GitHub и сборки его с помощью CodeBuild. Первый (исходный) шаг работает отлично. Но второй этап (сборка) выходит из строя во время части «UPLOAD_ARTIFACTS». Ниже приведены соответствующие регистрационные данные:AWS CodeBuild + CodePipeline: «Не найдено подходящих путей артефакта»

[Container] 2017/01/12 17:21:31 Assembling file list 
[Container] 2017/01/12 17:21:31 Expanding MyApp 
[Container] 2017/01/12 17:21:31 Skipping invalid artifact path MyApp 
[Container] 2017/01/12 17:21:31 Phase complete: UPLOAD_ARTIFACTS Success: false 
[Container] 2017/01/12 17:21:31 Phase context status code: ARTIFACT_ERROR Message: No matching artifact paths found 
[Container] 2017/01/12 17:21:31 Runtime error (No matching artifact paths found) 

Мое приложение имеет buildspec.yml в своей корневой папке. Это выглядит следующим образом:

version: 0.1 

phases: 
    build: 
    commands: 
     - echo `$BUILD_COMMAND` 

artifacts: 
    discard-paths: yes 
    files: 
    - MyApp 

Казалось бы, что «MyApp» в моем buildspec.yml должно быть что-то другое, но я наливая через все документы АМС без толку (что еще нового?) , Как я могу заставить его правильно загрузить артефакт?

+0

Вы поняли это, я столкнулся с такой же проблемой с моим приложением nodejs. Если вы можете помочь. – Jeet

+0

@Jeet Да, я думаю, мне нужно было использовать «**/*» в качестве источника или что-то в этом роде. Найдите раздел «артефакты»: http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax –

+0

Благодарим вас за быстрый ответ. Я бы попробовал. Я действительно ценю твою помощь. – Jeet

ответ

5

Артефакты должны относиться к файлам, загруженным из вашего действия «Исходный» или сгенерированным как часть действия «Сборка» в CodePipeline. Например, это от buildspec.yml я писал:

artifacts: 
    files: 
    - appspec.yml 
    - target/SampleMavenTomcatApp.war 
    - scripts/* 

Когда я вижу, что вы использовали MyApp в вашем артефактами разделе, заставляет меня думать, что вы имеете в виду OutputArtifacts Источника действия CodePipeline. Вместо этого вам нужно обратиться к файлам, которые он загружает и хранит там (т. Е. S3), и/или создает и хранит там.

Вы можете найти образец шаблона CloudFormation, который использует CodePipeline, CodeBuild, CodeDeploy и CodeCommit здесь: https://github.com/stelligent/aws-codedeploy-sample-tomcat/blob/master/codebuild-cpl-cd-cc.jsonbuildspec.yml находится в том же разветвленном репо.

+1

«вам нужно обратиться к файлам, которые он загружает и хранит там (т. Е. S3), и/или он генерирует и хранит там». Это имеет смысл, но как узнать, что такое имена этих значений? Я посмотрел в ведро S3 с исходным действием, и они, похоже, были случайно сгенерированными именами. –

+2

Извините, я думаю, что моя ссылка на S3 сбила с толку. Чтобы уточнить, в разделе артефактов/файлов вашего файла buildspec вы будете перечислять файлы, которые вы используете для сборки из исходного репозитория (то есть файлы в GitHub, а не случайно сгенерированные имена, созданные из CodePipeline), и любые соответствующие файлы созданный в процессе сборки. Непонятно, на основе предоставленной информации, на каком языке/платформе вы строите. –

+0

А, теперь я понимаю. Человек, документация с этими инструментами невероятно путается. Благодаря! –