modules/gitlab_integration/main.tf (94 lines of code) (raw):

## Integration GitLab with AWS CodePipeline provider "gitlab" { base_url = "https://${var.gitlab_hostname}/api/v4/" token = var.gitlab_token } ## Create AWS CodeCommit Repository for mirroring resource "aws_codecommit_repository" "gitlab_repo_name" { description = "Mirroring repo if we use GitLab for applications" repository_name = var.aws_repo_name default_branch = "master" } resource "aws_iam_user_policy" "codecommit_allow" { user = var.aws_user_name policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = [ "codecommit:*", ] Effect = "Allow" Resource = aws_codecommit_repository.gitlab_repo_name.arn }, ] }) } resource "tls_private_key" "ssh" { algorithm = "RSA" rsa_bits = "4096" } ## Add SSH Public key to IAM User resource "aws_iam_user_ssh_key" "user" { username = var.aws_user_name encoding = "SSH" public_key = tls_private_key.ssh.public_key_openssh } ## Add variables to CI/CD Pipeline variables resource "gitlab_project_variable" "ssh_key" { project = var.project_id key = "CODECOMMIT_SSH_KEY" value = tls_private_key.ssh.private_key_pem protected = false variable_type = "file" } resource "gitlab_project_variable" "user_name" { project = var.project_id key = "CODECOMMIT_USER_NAME" value = aws_iam_user_ssh_key.user.ssh_public_key_id protected = false } resource "gitlab_project_variable" "repo_url" { project = var.project_id key = "CODECOMMIT_REPO_URL" value = "ssh://git-codecommit.${var.region}.amazonaws.com/v1/repos/${var.aws_repo_name}" protected = false } resource "gitlab_project_variable" "sonar_url" { project = var.project_id key = "SONAR_HOST_URL" value = var.sonar_url protected = false } resource "gitlab_project_variable" "sonar_login" { project = var.project_id key = "SONAR_LOGIN" value = var.sonarcloud_token protected = false } resource "gitlab_project_variable" "sonar_organization_name" { project = var.project_id key = "SONAR_ORGANIZATION_NAME" value = var.organization_name protected = false } resource "gitlab_project_variable" "sonar_project_key" { project = var.project_id key = "SONAR_PROJECT_KEY" value = var.project_key protected = false } resource "gitlab_project_variable" "sonar_project_name" { project = var.project_id key = "SONAR_PROJECT_NAME" value = var.project protected = false } resource "gitlab_project_variable" "sonar_qg_timeout" { project = var.project_id key = "SONAR_QG_TIMEOUT" value = var.sonar_timeout protected = false } resource "gitlab_project_variable" "app_language" { project = var.project_id key = "APP_LANGUAGE" value = var.app_language protected = false }