【问题标题】:AWS CodeBuild with GitHub - only for specific directory带有 GitHub 的 AWS CodeBuild - 仅适用于特定目录
【发布时间】:2017-11-08 16:34:00
【问题描述】:

我正在尝试使用 AWS Pipeline、S3 和 CodeBuild 为 Angular 2 应用程序设置自动部署。

在 Andrés 的 tutorial 之后,我能够连接 CodeBuild GitHub 存储库,并且该过程运行良好。

但是,我们的 Angular 应用程序位于更大存储库的子目录中。

有没有办法在 repo 中指定一个目录,以便只有在子目录更改时才会触发构建?

非常感谢。

【问题讨论】:

    标签: amazon-web-services github amazon-s3 aws-codebuild


    【解决方案1】:

    如果您是 CodeBuild 中的 GitHub webhook,您现在有一个 file_path 选项,它允许您仅在特定文件或目录发生更改时触发构建。

    文档:https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html#sample-github-pull-request-filter-webhook-events-console

    【讨论】:

    • @IlyaKrasnov 这应该是现在公认的答案。
    • 感谢您的链接,它适用于 codebuild 但是当我将 codebuild 连接到 codepipeline 时,codepipeline 忽略了在 codebuild 上的 file_path 触发器。任何推送到 repo 都会触发代码管道。你知道是否有任何方法可以通过 file_path 来限制 codepipeline 触发?
    【解决方案2】:

    看起来您不能只拉下某个文件夹,但是构建规范的工件您可以指定用于构建的目录。

    对于 GitHub,对于可选的源版本值,键入与您要构建的源代码版本相对应的提交 ID、拉取请求 ID、分支名称或标签名称。如果指定了拉取请求 ID,则它必须使用格式 pr/pull-request-ID(例如,pr/25)。如果指定了分支名称,则将使用分支的 HEAD 提交 ID。如果 Source version 为空,将使用默认分支的 HEAD 提交 ID。

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

    artifacts 可选序列。表示有关 AWS CodeBuild 可以在何处找到构建输出以及 AWS CodeBuild 如何准备将其上传到 Amazon S3 输出存储桶的信息。例如,如果您正在构建 Docker 映像并将其推送到 Amazon ECR,或者您正在对源代码运行单元测试但未构建它,则不需要此序列。 文件:必需的序列。表示构建环境中包含构建输出工件的位置。包含一系列标量,每个标量代表一个单独的位置,AWS CodeBuild 可以在其中找到相对于原始构建位置的构建输出工件。位置可以包括以下内容: 单个文件(例如,my-file.jar)。 子目录中的单个文件(例如,my-subdirectory/my-file.jar 或 my-parent-subdirectory/my-subdirectory/my-file.jar)。 '/' 递归地表示所有文件。 my-subdirectory/ 表示名为 my-subdirectory 的子目录中的所有文件。 my-subdirectory//* 表示从名为 my-subdirectory 的子目录递归开始的所有文件。

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

    【讨论】:

    • 谢谢,@strongiz。我们使用子树和管道的单独存储库解决了这个问题。
    • 现在你有 2 个问题 ;-)
    猜你喜欢
    • 2020-05-16
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多