如何指定Codebuild的辅助源中包含的buildspec文件?

问题描述 投票:0回答:1

我的计划是用两个资源创建一个构建项目:

主要来源是我正在构建的应用程序的存储库。

辅助资源是一个包含通用buildspec.yml和其他文件的存储库,例如eslint configs。

原因是我想将应用程序代码与构建定义分开,因此我可以将相同的构建定义重用于多个应用程序。相同的buildspec.yml和随附的eslint文件能够构建我的任何后端应用程序。

根据文档,构建项目的buildspec路径是相对于主要源的根路径的路径。

但是指向驻留在辅助源代码中的buildspec.yml的正确方法是什么?

(据我所知,应用程序代码必须是主要来源,因此Codebuild可以检测到代码更改(如PR打开和代码推送操作。)

((我知道Codebuild允许将S3路径作为buildspec路径,但是由于我的第二个来源是存储库,所以我看不出它对我有什么帮助。)

谢谢!

amazon-web-services aws-codepipeline aws-codebuild
1个回答
0
投票

我的理解是,您需要一个buildspec,您可以将其重复用于具有类似构建的多个项目。如果是这种情况,我认为您可以这样做,但是您需要反转主要和次要来源。

创建构建项目时,必须定义将要使用的buildspec。您的构建项目将使用PRIMARY源中的buildspec。因此,具有您主要构建规格的SOURCE将需要是您的PRIMARY,而您将要构建的项目将是您的SECONDARY。

然后,您可以在buildspec中使用环境变量引用指向SECONDARY源的命令。在您的buildspec中,您将引用CODEBUILD_SRC_DIR_sourceIdentier。

我已经使用具有多个源的代码管道完成了此操作。如果您将辅助源的输出定义为SECONDARY_SOURCE_OUTPUT

source output naming example

然后您将在构建规范中将其称为$ CODEBUILD_SRC_DIR_SECONDARY_SOURCE_OUTPUT /。

您的buildspec存在于您的主要源代码中,但您可以设置命令,使其从buildspec中的以上目录执行。现在,您可以拥有多个使用相同buildspec的具有相同构建模式的类似项目。

在以下情况下,我在源代码阶段左侧的项目中使用相同的buildspec,并且可以将不同的项目作为辅助源代码引入。

what a codepipeline would look like.

[This link有多个来源的信息。

© www.soinside.com 2019 - 2024. All rights reserved.