如何为多个AWS CodeBuild项目共用同一buildspec.yml文件?
如何让多个CodeBuild项目共用S3中的单个buildspec.yml文件
当然可以!AWS CodeBuild完全支持引用存储在S3中的buildspec文件,刚好能解决你不想在每个Maven/Java项目里重复维护buildspec.yml的问题——我自己管理多个微服务项目时就用这个方案,省了好多重复修改的功夫。
下面是具体的实现步骤:
第一步:上传buildspec.yml到S3并配置权限
把你的通用buildspec.yml文件上传到一个S3桶中,然后确保CodeBuild使用的服务角色拥有读取该文件的权限。你可以在S3桶的权限策略里添加如下规则(替换占位符为你的实际信息):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::你的账号ID:role/service-role/你的CodeBuild服务角色名" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::你的S3桶名/你的buildspec文件路径/buildspec.yml" } ] }第二步:在CodeBuild项目中配置引用S3的buildspec
进入每个CodeBuild项目的配置页面,找到"构建规范"部分:- 选择"使用buildspec文件"选项
- 在"buildspec名称"输入框中,填写S3文件的路径,格式为:
s3://<你的S3桶名>/<文件路径>/buildspec.yml
比如你的桶叫shared-buildspecs,文件放在根目录,就填s3://shared-buildspecs/buildspec.yml
额外技巧:用环境变量适配不同项目
如果你的多个项目需要一些细微的差异化配置(比如不同的Maven参数),不用修改S3里的buildspec,直接在每个CodeBuild项目的"环境变量"中添加自定义变量,然后在buildspec里引用它们。比如:
在buildspec.yml中写:phases: build: commands: - mvn clean install -Dprofile=$MAVEN_PROFILE然后在不同的CodeBuild项目里设置
MAVEN_PROFILE环境变量为dev、prod等不同值即可。
内容的提问来源于stack exchange,提问作者Stanislav Ivanov
相关产品推荐
相关产品推荐

