如何在terraform中使用代码管道设置代码构建?
我正在尝试设置codebuild以接收来自terraform代码管道的工件。terraform文件中codebuild资源的相关部分如下所示:如何在terraform中使用代码管道设置代码构建?,terraform,aws-codepipeline,aws-codebuild,Terraform,Aws Codepipeline,Aws Codebuild,我正在尝试设置codebuild以接收来自terraform代码管道的工件。terraform文件中codebuild资源的相关部分如下所示: source { type = "CODEPIPELINE" git_clone_depth = 1 } 运行terraform apply时,我收到一个错误,错误是: 错误:创建CodeBuild项目时出错:InvalidInputException:无效输入:使用CodePipeline时,sour
source {
type = "CODEPIPELINE"
git_clone_depth = 1
}
运行terraform apply
时,我收到一个错误,错误是:
错误:创建CodeBuild项目时出错:InvalidInputException:无效输入:使用CodePipeline时,sourceType和artifactType必须设置为:CodePipeline
状态代码:400,请求id:2c32335e-d3c1-4abd-823b-83e26b947c77
terraform文档中没有关于sourceType和FactType的任何内容。。。一个设置代码如何构建以从terraform的代码管道接收工件?谢谢 此错误与生成输出工件定义[1]有关 要解决此问题,请为TF资源上的“源”和“工件”属性定义类型=“CODEPIPELINE”:aws\u codebuild\u项目: 发件人: 源代码支持以下内容: type-(必选)包含源代码的存储库的类型 待建。此参数的有效值为:CODECOMMIT, 代码管道、GITHUB、GITHUB_ENTERPRISE、BITBUCKET、S3或无_源 工件支持以下内容: type-(必选)生成输出工件的类型。的有效值 此参数为:CODEPIPELINE、无_工件或S3 如果您仍然面临问题,请共享您的TF模板 参考: [1] 编辑1: 我复制了你的模板并应用了它,它运行起来没有任何问题。唯一改变的是bucket名称和项目名称:
resource "aws_s3_bucket" "example" {
bucket = "shariqexampletestingterrastartup" # <======
resource "aws_codebuild_project" "example" {
name = "terraform-cb-project" #var.DOMAIN_NAME # <======
作为参考,我的TF版本如下:
terraform --version
Terraform v0.12.10
+ provider.aws v2.44.0
Your version of Terraform is out of date! The latest version
is 0.12.19. You can update by downloading from www.terraform.io/downloads.html
这是我为我的用例测试和工作的内容:
codebuild.tf
:
resource "aws_codebuild_project" "code_build" {
name = "${var.teamid}-${var.prjid}"
description = "${var.teamid}-${var.prjid}"
build_timeout = "5"
service_role = var.codebuild_role
artifacts {
type = "CODEPIPELINE"
}
environment {
compute_type = "BUILD_GENERAL1_LARGE"
image = "aws/codebuild/amazonlinux2-x86_64-standard:3.0"
type = "LINUX_CONTAINER"
privileged_mode = true
}
source {
type = "${var.build_source}"
location = "${var.storage_bucket}"
git_clone_depth = var.git_clone_depth
buildspec = "${file("${var.buildspec_filepath}")}"
}
tags = {
Name = "${var.teamid}-${var.prjid}"
Owner = "${var.email}"
TeamId = "${var.teamid}"
PrjId = "${var.prjid}"
}
}
input.tfvars
:
email = "demo@demo.com"
aws_region = "us-east-2"
codebuild_role = "arn:aws:iam::123456789012:role/service-role/codebuild-service-role"
storage_bucket = "codepipeline-12345"
kms_keyid = "12345"
github_org = "tomarv2"
github_repo = "demo"
github_oauth_token = "xyz"
build_source = "CODEPIPELINE"
git_clone_depth = "0"
buildspec_filepath = "buildspec.yml"
teamid = "demo"
prjid = "demo-pipeline"
我已经按照您的建议添加了terraform模板,这两个项目都按照您的建议用value CODEPIPELINE填写请参见Edit1。
email = "demo@demo.com"
aws_region = "us-east-2"
codebuild_role = "arn:aws:iam::123456789012:role/service-role/codebuild-service-role"
storage_bucket = "codepipeline-12345"
kms_keyid = "12345"
github_org = "tomarv2"
github_repo = "demo"
github_oauth_token = "xyz"
build_source = "CODEPIPELINE"
git_clone_depth = "0"
buildspec_filepath = "buildspec.yml"
teamid = "demo"
prjid = "demo-pipeline"