Terraform
terraform
resource "aws_codepipeline" "pipeline" {
name = "my-pipeline"
role_arn = aws_iam_role.codepipeline.arn
artifact_store {
location = aws_s3_bucket.pipelien_bucket.bucket
type = "s3"
}
stage {
name = "Source"
action {
name = "Source"
category = "Source"
owner = "AWS"
provider = "CodeCommit"
version = 1
output_artifacts = ["source"]
configuration {
BranchName = "develop"
RepositoryName = aws_codecommit_repository.my_repository.repository_nmae
}
}
}
stage {
name = "Build"
action {
name = "Build"
category = "Build"
owner = "AWS"
provider = "CodeBuild"
version = "1"
run_order = 2
input_artifacts = [
"source"]
output_artifacts = [
"build"]
configuration = {
ProjectName = aws_codebuild_project.my_project.name
}
}
}
stage {
name = "Deploy"
action {
name = "Deploy"
category = "Deploy"
owner = "AWS"
provider = "ECS"
version = 1
run_order = 1
input_artifacts = ["Build"]
configuration {
ClusterName = aws_ecs_cluster.my_clustername
ServiceName = aws_ecs_service.my_service.name
FileName = "${var.file_name}"
}
}
}
}
gitlab-ci.yml
image: golang:1.15 veriables: REPO_NAME: gitlab.com/xxxxx/microservice before_script: - mkdir -p $GOPATH/src/$(dirname $REPO_NAME) - ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME - cd $GOPATH/src/$REPO_NAME stages: - test test: stage: test script: make test
やはり terraform も結構使われてるのね。
gitlab container repositoryにpushせずに、直接ecrにpushする場合
build-demo-app:
stage: build
script:
- docker build demo-app:latest
- docker push xxxx.dkr.ecr.ap-northeast-1.amazonaws.com/demo-app-${CI_BUILD_REF_NAME}:latest
deploy-demo-app:
stage: deploy
script:
- aws deploy create-deployment --application-name demo-app-${CI_BUILD_REF_NAME} --cli-input-json file://deployment.json --region ap-northeast-1