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