From 1e3f900752658e72215e179ec0df5f8995990ab2 Mon Sep 17 00:00:00 2001 From: Alberto del Barrio Date: Tue, 13 Aug 2019 16:37:06 +0200 Subject: [PATCH 1/2] Add cache to codebuild job --- terraform/codebuild/data.tf | 1 - terraform/codebuild/main.tf | 17 +++++++++++------ terraform/codebuild/outputs.tf | 1 - terraform/codebuild/provider.tf | 2 +- terraform/codebuild/variables.tf | 1 - 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/terraform/codebuild/data.tf b/terraform/codebuild/data.tf index 9733c57..8fc4b38 100644 --- a/terraform/codebuild/data.tf +++ b/terraform/codebuild/data.tf @@ -1,2 +1 @@ data "aws_caller_identity" "current" {} - diff --git a/terraform/codebuild/main.tf b/terraform/codebuild/main.tf index 13b82c4..715bebd 100644 --- a/terraform/codebuild/main.tf +++ b/terraform/codebuild/main.tf @@ -7,7 +7,7 @@ resource "aws_codebuild_project" "build" { name = "${var.project_name}" description = "CI pipeline for ${var.project_name}" - build_timeout = "60" #In minutes + build_timeout = "60" #In minutes service_role = "${aws_iam_role.codebuild.arn}" # Valid values for this parameter are: CODEPIPELINE, NO_ARTIFACTS or S3. @@ -18,9 +18,10 @@ resource "aws_codebuild_project" "build" { } environment { - compute_type = "BUILD_GENERAL1_LARGE" - image = "${var.build_image}" - type = "LINUX_CONTAINER" + compute_type = "BUILD_GENERAL1_LARGE" + image = "${var.build_image}" + type = "LINUX_CONTAINER" + # You need "true" here to be able to run Docker daemon inside the building container privileged_mode = "true" @@ -37,6 +38,11 @@ resource "aws_codebuild_project" "build" { buildspec = "${var.buildspec_file}" } + cache { + type = "LOCAL" + modes = ["LOCAL_DOCKER_LAYER_CACHE", "LOCAL_CUSTOM_CACHE", "LOCAL_SOURCE_CACHE"] + } + tags { "App" = "${var.project_name}" } @@ -114,7 +120,7 @@ POLICY #--- resource "aws_ecr_repository" "registry" { - name = "${var.project_name}" + name = "${var.project_name}" } resource "aws_ecr_repository_policy" "registrypolicy" { @@ -150,4 +156,3 @@ resource "aws_ecr_repository_policy" "registrypolicy" { } EOF } - diff --git a/terraform/codebuild/outputs.tf b/terraform/codebuild/outputs.tf index 8a6b850..71cdb6b 100644 --- a/terraform/codebuild/outputs.tf +++ b/terraform/codebuild/outputs.tf @@ -7,4 +7,3 @@ output "ecr_url" { value = "${aws_ecr_repository.registry.repository_url}" description = "URL of the new container registry which will host your builds" } - diff --git a/terraform/codebuild/provider.tf b/terraform/codebuild/provider.tf index a5beca3..334bf06 100644 --- a/terraform/codebuild/provider.tf +++ b/terraform/codebuild/provider.tf @@ -3,7 +3,7 @@ #--- provider "aws" { - region = "us-west-2" + region = "us-west-2" } terraform { diff --git a/terraform/codebuild/variables.tf b/terraform/codebuild/variables.tf index e5a3aaa..8c62b53 100644 --- a/terraform/codebuild/variables.tf +++ b/terraform/codebuild/variables.tf @@ -17,4 +17,3 @@ variable "buildspec_file" { variable "build_image" { default = "aws/codebuild/standard:1.0" } - From 9f2b5cfe99c163a31f1e1d3a1aa97e373e648ebf Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Tue, 13 Aug 2019 16:50:16 +0200 Subject: [PATCH 2/2] update to terraform12 --- terraform/codebuild/data.tf | 4 +++- terraform/codebuild/main.tf | 32 ++++++++++++++++++-------------- terraform/codebuild/outputs.tf | 5 +++-- terraform/codebuild/provider.tf | 1 + terraform/codebuild/variables.tf | 1 + 5 files changed, 26 insertions(+), 17 deletions(-) diff --git a/terraform/codebuild/data.tf b/terraform/codebuild/data.tf index 8fc4b38..d6fa1a8 100644 --- a/terraform/codebuild/data.tf +++ b/terraform/codebuild/data.tf @@ -1 +1,3 @@ -data "aws_caller_identity" "current" {} +data "aws_caller_identity" "current" { +} + diff --git a/terraform/codebuild/main.tf b/terraform/codebuild/main.tf index 715bebd..062b6f4 100644 --- a/terraform/codebuild/main.tf +++ b/terraform/codebuild/main.tf @@ -5,10 +5,10 @@ # You can find more options for customizing this resource to your needs # here: https://www.terraform.io/docs/providers/aws/r/codebuild_project.html resource "aws_codebuild_project" "build" { - name = "${var.project_name}" + name = var.project_name description = "CI pipeline for ${var.project_name}" - build_timeout = "60" #In minutes - service_role = "${aws_iam_role.codebuild.arn}" + build_timeout = "60" #In minutes + service_role = aws_iam_role.codebuild.arn # Valid values for this parameter are: CODEPIPELINE, NO_ARTIFACTS or S3. # If you are building a Docker container and pushing it to some registry, @@ -19,23 +19,23 @@ resource "aws_codebuild_project" "build" { environment { compute_type = "BUILD_GENERAL1_LARGE" - image = "${var.build_image}" + image = var.build_image type = "LINUX_CONTAINER" # You need "true" here to be able to run Docker daemon inside the building container privileged_mode = "true" environment_variable { - "name" = "DOCKER_REPO" - "value" = "${aws_ecr_repository.registry.repository_url}" + name = "DOCKER_REPO" + value = aws_ecr_repository.registry.repository_url } } source { # Choose type "NO_SOURCE" to don't build from Github type = "GITHUB" - location = "${var.github_repo}" - buildspec = "${var.buildspec_file}" + location = var.github_repo + buildspec = var.buildspec_file } cache { @@ -43,14 +43,14 @@ resource "aws_codebuild_project" "build" { modes = ["LOCAL_DOCKER_LAYER_CACHE", "LOCAL_CUSTOM_CACHE", "LOCAL_SOURCE_CACHE"] } - tags { - "App" = "${var.project_name}" + tags = { + "App" = var.project_name } } # Unomment this section if you do want to build automatically on push resource "aws_codebuild_webhook" "webhook" { - project_name = "${aws_codebuild_project.build.name}" + project_name = aws_codebuild_project.build.name branch_filter = "^master$" } @@ -75,10 +75,11 @@ resource "aws_iam_role" "codebuild" { ] } EOF + } resource "aws_iam_role_policy" "codebuild" { - role = "${aws_iam_role.codebuild.name}" + role = aws_iam_role.codebuild.name policy = <