-
[AWS 자동 배포 시스템] 9. ECS Jenkins 구축AWS 2022. 2. 23. 01:19반응형
이제 마지막으로 ECS Jenkins를 구축하려고 한다.
Jenkins Pipeline을 생성한다.
Script는 아래 코드를 참고하면 된다.
환경 변수 코드만 본인 설정에 맞게 변경해주면 된다.
pipeline { agent any environment { AWS_ACCOUNT_ID="844482743949" AWS_DEFAULT_REGION="ap-northeast-2" IMAGE_REPO_NAME="velnova" IMAGE_TAG="latest" REPOSITORY_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}:${IMAGE_TAG}" PROJECT_NAME = 'velnova-server' //Jenkins Project Name CLUSTER_NAME = 'velnova-cluster' SERVICE_NAME = 'velnova-service' BRANCH = 'master' GIT_URL = 'https://github.com/alsdud154/server-velnova-me.git' } stages { stage('AWS ECR Login'){ steps { script { sh "aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com" } } } stage ('Git Clone'){ steps { git branch: BRANCH, credentialsId: 'GIT_ACCOUNT', url: GIT_URL } } stage('Gradle Build') { steps { sh './gradlew build -x test' } } stage('Docker Build') { steps { script { sh "docker build -t ${IMAGE_REPO_NAME}:${IMAGE_TAG} ." } } } stage ('ECR Push') { steps { script { sh "docker tag ${IMAGE_REPO_NAME}:${IMAGE_TAG} ${REPOSITORY_URI}" sh "docker push ${REPOSITORY_URI}" } } } stage('Clean docker image') { steps{ sh "docker rmi -f ${IMAGE_REPO_NAME} ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}" sh './gradlew clean' } } stage ('ECS Deploy') { steps { script { sh "aws ecs update-service --cluster ${CLUSTER_NAME} --service ${SERVICE_NAME} --force-new-deployment" } } } } }
정상적으로 배포가 되었다.
롤링 업데이트 방식을 사용하여 잠시동안 기존 서비스 2개 + 새로 배포한 서비스 2개 총 4개가 실행되고
조금 뒤 기존 서비스가 2개가 중지된다.
이것으로 Front + Server 자동 배포 구축을 끝마친다.
반응형'AWS' 카테고리의 다른 글
[AWS 자동 배포 시스템] 10. Jenkins private subnet EC2(Ubuntu) 배포(Inoticoming) (0) 2022.03.14 [AWS 자동 배포 시스템] 8. ECS 구축 (0) 2022.02.23 [AWS 자동 배포 시스템] 7. ECR 구축 (0) 2022.02.22 [AWS 자동 배포 시스템] 6. 로드밸런서 구축 (0) 2022.02.18 [AWS 자동 배포 시스템] 5. RDS Mysql 구축 (0) 2022.02.18