CodePipelineにGitHubからコードをフェッチして、CodeBuildでビルドしようとしています。最初の(ソース)ステップは正常に機能します。ただし、「UPLOAD_ARTIFACTS」部分で2番目の(ビルド)ステップが失敗します。関連するログステートメントは次のとおりです。
[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
私のbuildspec.ymlの "MyApp"は何か違うように見えるかもしれませんが、私はすべてのAWSドキュメントを注いで役に立たないようにしています(他に何が新しいのですか?)。アーティファクトを正しくアップロードするにはどうすればよいですか?
アーティファクトは、ソースアクションからダウンロードされたファイル、またはCodePipelineのビルドアクションの一部として生成されたファイルを参照する必要があります。たとえば、これは私が書いたbuildspec.ymlからのものです。
artifacts:
files:
- appspec.yml
- target/SampleMavenTomcatApp.war
- scripts/*
アーティファクトセクションでMyAppを使用していることがわかると、OutputArtifactsを参照していると思いますCodePipelineのソースアクション。代わりに、ダウンロードしてそこに保存するファイル(S3など)を参照するか、生成してそこに保存する必要があります。
ここで、CodePipeline、CodeBuild、CodeDeploy、およびCodeCommitを使用するCloudFormationテンプレートのサンプルを見つけることができます。 https://github.com/stelligent/aws-codedeploy-sample-Tomcat/blob/master/codebuild-cpl -cd-cc.jsonbuildspec.yml
は同じフォークされたリポジトリにあります。
私にも同様の問題があり、問題を修正するための解決策は、「ルートフォルダーを作成せずにアーカイブ内にディレクトリとファイルをパッケージ化する」ことでした。
https://docs.aws.Amazon.com/codebuild/latest/userguide/sample-war-hw.html
Buildspecアーティファクトは、CodeBuildがビルド出力を見つけることができる場所と、Amazon S3出力バケットにアップロードするためにCodeBuildが準備する方法に関する情報です。
「一致するアーティファクトパスが見つかりませんでした」というエラーの場合の確認事項:
artifacts: files: -'FileNameWithPath'
お役に立てれば。
アーティファクトは、何らかの方法でコンパイルした場合でも、ソースから直接コピーしたファイルだけでも、ビルドプロセスに必要なものです。そのため、ビルドサーバーはコードを取り込み、指示に従ってコンパイルし、指定されたファイルをS3にコピーします。
私の場合、Spring Boot + Gradle、出力jarファイル(私がgradle bootJar
これは自分のシステムでは)build/libs/demo1-0.0.1-SNAPSHOT.jarに配置されているため、buildspec.ymlで次のように設定します。
artifacts:
files:
- build/libs/*.jar
この1つのファイルは、S3で表示されます。残りのアーティファクトセクションで選択したオプションに応じて、オプションでZipおよび/またはサブフォルダーに表示されます。