forked from aws-ia/terraform-aws-codebuild
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tf
More file actions
106 lines (87 loc) · 2.63 KB
/
main.tf
File metadata and controls
106 lines (87 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
##########
# Defaults
##########
provider "aws" {
region = var.region
}
terraform {
required_version = ">= 1.0.0"
}
resource "random_string" "rand6" {
length = 6
special = false
upper = false
}
locals {
git_provider = element(split("/", var.http_git_clone_url), 2)
git_protocal = element(split(":", var.http_git_clone_url), 0)
git_owner = element(split("/", var.http_git_clone_url), 3)
git_repo = trimsuffix(element(split("/", var.http_git_clone_url), 4), ".git")
random_project_name = "${local.git_repo}-${random_string.rand6.result}"
codebuild_project_name = (var.project_name != "" ? var.project_name : "${local.random_project_name}")
}
resource "aws_codebuild_project" "codebuild_project" {
name = local.codebuild_project_name
description = local.codebuild_project_name
build_timeout = "120"
service_role = var.create_role_and_policy ? aws_iam_role.codebuild_role[0].arn : var.codebuild_role_arn
artifacts {
type = var.artifacts_type
}
source {
type = "GITHUB"
location = "${local.git_protocal}://${local.git_provider}/${local.git_owner}/${local.git_repo}.git"
git_clone_depth = var.git_clone_depth
buildspec = templatefile("${path.cwd}/${var.build_spec_file}", {})
git_submodules_config {
fetch_submodules = true
}
}
environment {
image = var.build_image
type = "LINUX_CONTAINER"
compute_type = var.compute_type
image_pull_credentials_type = "CODEBUILD"
privileged_mode = true
dynamic "environment_variable" {
for_each = var.codebuild_env_vars["LOAD_VARS"] != false ? var.codebuild_env_vars : {}
content {
name = environment_variable.key
value = environment_variable.value
}
}
}
logs_config {
cloudwatch_logs {
group_name = "log-group"
stream_name = "log-stream"
}
s3_logs {
status = "DISABLED"
}
}
tags = merge(var.tags, { "aws-ia_module" = "true" })
}
# IAM
resource "aws_iam_role" "codebuild_role" {
count = var.create_role_and_policy ? 1 : 0
name = "${"${local.codebuild_project_name}"}_codebuild_deploy_role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "codebuild.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "codebuild_deploy" {
role = aws_iam_role.codebuild_role[0].name
policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
}