【问题标题】:AWS CodeBuild + CodePipeline: "No matching artifact paths found"AWS CodeBuild + CodePipeline:“找不到匹配的工件路径”
【发布时间】:2017-05-28 08:21:10
【问题描述】:

我正在尝试让 CodePipeline 从 GitHub 获取我的代码并使用 CodeBuild 构建它。第一个(源)步骤工作正常。但是第二个(构建)步骤在“UPLOAD_ARTIFACTS”部分失败。以下是相关的日志语句:

[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 文档都无济于事(还有什么新东西?)。我怎样才能让它正确上传工件?

【问题讨论】:

  • 您是否发现我的 nodejs 应用程序面临完全相同的问题。如果可以请帮忙。
  • @Jeet 是的,我想我需要使用 '*/' 作为来源,或者类似的东西。查找“工件”部分:docs.aws.amazon.com/codebuild/latest/userguide/…
  • 感谢约翰的快速回复。我会试一试。非常感谢您的帮助。

标签: amazon-web-services aws-codepipeline aws-codebuild


【解决方案1】:

工件应引用从您的 Source 操作下载的文件或作为 CodePipeline 中的 Build 操作的一部分生成的文件。例如,这是来自我写的 buildspec.yml:

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

当我看到您在工件部分使用 MyApp 时,我觉得您指的是 CodePipeline 的 Source 操作的 OutputArtifacts。相反,您需要参考它下载并存储在那里(即 S3)和/或它生成并存储在那里的文件。

您可以在此处找到使用 CodePipeline、CodeBuild、CodeDeploy 和 CodeCommit 的 CloudFormation 模板示例:https://github.com/stelligent/aws-codedeploy-sample-tomcat/blob/master/codebuild-cpl-cd-cc.jsonbuildspec.yml 位于同一个分叉存储库中。

【讨论】:

  • “您需要参考它下载并存储在那里(即 S3)和/或它生成并存储在那里的文件”这是有道理的,但我怎么知道这些值的名称是什么?我查看了 Source 操作的 S3 存储桶,它们似乎是随机生成的名称。
  • 对不起,我认为我的 S3 引用混淆了一些东西。为了澄清,在您的构建规范的工件/文件部分,您将列出您用于从源存储库构建的文件(即 GitHub 中的文件 - 而不是从 CodePipeline 生成的随机生成的名称)和任何相关文件从您的构建过程中生成。根据提供的信息,您正在构建的语言/平台尚不清楚。
  • 啊,我现在明白了。伙计,这些工具的文档令人难以置信的混乱。谢谢!
  • “找不到匹配的工件路径”这句话非常令人困惑。
【解决方案2】:

Buildspec 工件是有关 CodeBuild 可以在哪里找到构建输出以及 CodeBuild 如何准备将其上传到 Amazon S3 输出存储桶的信息。

对于错误“未找到匹配的工件路径”需要检查的几件事:

  1. 在 buildspec.yml 文件中指定的工件文件具有正确的路径和文件名。

artifacts: files: -'FileNameWithPath'

  1. 如果您使用的是 .gitignore 文件,请确保在 Artifacts 部分指定文件 不包含在 .gitignore 文件中

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    就我而言,我收到此错误是因为我在构建阶段更改了目录(我正在构建的 java 项目位于子目录中)并且没有更改回根目录。在构建阶段结束时添加cd ..就可以了。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,解决问题的方法是“将目录和文件打包到存档中,不再创建根文件夹”。

      https://docs.aws.amazon.com/codebuild/latest/userguide/sample-war-hw.html

      【讨论】:

        【解决方案5】:

        工件是您想要从构建过程中获得的东西 - 无论是以某种方式编译还是只是直接从源代码复制的文件。因此构建服务器拉入代码,按照您的说明进行编译,然后将指定的文件复制到 S3。

        在我使用 Spring Boot + Gradle 的情况下,输出 jar 文件(当我在自己的系统上 gradle bootJar 这个时)放在 build/libs/demo1-0.0.1-SNAPSHOT.jar 中,所以我设置以下在 buildspec.yml 中:

        artifacts:
          files:
            - build/libs/*.jar
        

        这个文件在 S3 中为我显示,可以选择在 zip 和/或子文件夹中,具体取决于在工件部分的其余部分中选择的选项

        【讨论】:

          【解决方案6】:

          尝试使用版本 0.2 的构建规范

          这里是nodejs的一个典型例子

          version: 0.2
          phases:
            pre_build:
              commands:
                - echo Nothing to do in the pre_build phase...
            build:
              commands:
                - npm install
                - npm run build
            post_build:
              commands:
                - echo Build completed on
          artifacts:
            files:
              - appspec.yml
              - build/*
          
          

          【讨论】:

            【解决方案7】:

            如果您像我一样在 CodePipeline 安排中使用 Codebuild 时遇到了这个问题。

            你需要使用以下

            - printf '[{"name":"container-name-here","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > $CODEBUILD_SRC_DIR/imagedefinitions.json
            

            【讨论】:

              猜你喜欢
              • 2018-07-18
              • 2019-06-25
              • 1970-01-01
              • 2017-06-08
              • 1970-01-01
              • 2019-12-15
              • 2020-08-23
              • 1970-01-01
              • 2022-09-26
              相关资源
              最近更新 更多