CircleCIのContextsを利用し、AWS ECSへデプロイする

springboot + kotlinで開発したbackendAPIをCircleCIを利用してデプロイしています。 staging/production環境毎の環境変数はContextsを利用すればもっと簡単に設定することが可能です。 Contexts設定 Organization Settings > Contexts でサービスの各環境毎の環境変数を設定します。 staging/productionの環境名で追加しました。 staging環境の環境変数です。 ecrとecsのorbsを利用するため、AWSの環境変数を追加し、プロジェクト内で共通で利用するためにSERVICE_PREFIXを追加しました。 CircleCI config.yml 設定 build-and-push-image backend-buildを実行します。 releaseブランチの場合、build-and-push-image-stagingを実行します。 masterブランチの場合、build-and-push-image-productionを実行します。 contextにはCircleCI Contextsで指定した名前を指定します。 version: 2.1 orbs: aws-ecr: circleci/aws-ecr@6.15.3 aws-ecs: circleci/aws-ecs@1.4.0 gradle: circleci/gradle@2.2.0 executors: openjdk-executor: docker: - image: circleci/openjdk:14-jdk-buster-node-browsers ..... jobs: backend-build: executor: openjdk-executor ..... workflows: build-deploy: jobs: - backend-build - aws-ecr/build-and-push-image: name: build-and-push-image-staging requires: - backend-build context: DEMO_STAGING attach-workspace: true checkout: false repo: '${SERVICE_PREFIX}' tag: 'latest,${CIRCLE_SHA1}' filters: branches: only: - /release\/.*/ - aws-ecr/build-and-push-image: name: build-and-push-image-production requires: - backend-build context: DEMO_PRODUCTION attach-workspace: true checkout: false repo: '${SERVICE_PREFIX}' tag: 'latest,${CIRCLE_SHA1}' filters: branches: only: - master deploy-service-update backend-buildを実行します。 releaseブランチの場合、build-and-push-image-stagingの実行が完了されたらdeploy-service-update-stagingを実行します。 masteブランチの場合、build-and-push-image-productionの実行が完了されたらbuild-and-push-image-productionを実行します。 contextにはCircleCI Contextsで指定した名前を指定します。 - aws-ecs/deploy-service-update: name: deploy-service-update-staging requires: - build-and-push-image-staging context: DEMO_STAGING family: '${SERVICE_PREFIX}-backend' cluster-name: '${SERVICE_PREFIX}-backend' service-name: '${SERVICE_PREFIX}-backend-ec2-service' container-image-name-updates: 'container=${SERVICE_PREFIX}-backend,tag=${CIRCLE_SHA1}' filters: branches: only: - /release\/....

2021-02-02 · bokyung