AWS 세팅을 마쳤다면, 다시 깃랩으로 돌아와주자

Setting > CI/CD 로 들어가자

여기서 Variables탭을 열어보자

여기에 이전 포스팅에서 만든 project-01-user의 액세스 키와 비밀번호를 변수로 입력해주자

추가된 상태
IntelliJ로 돌아와서 깃랩 CI파일을 생성해보자


루트에 .gitlab-ci.yml 생성해주자
파일 내용은 다음과 같이 입력해준다
services:
- docker:dind # docker:latest와 버전이 함께 업데이트됨
stages:
- build jar
- build and push docker image
- deploy
variables:
APPLICATION_NAME: "01"
TAG_NAME: "latest"
DOCKER_IMAGE: "group-13204911/project-01" # AWS ECS 프라이빗 리포지토리 이름과 동일하게
build:
image: eclipse-temurin:17-jdk-jammy
stage: build jar
script:
- chmod +x gradlew
- ./gradlew clean build
artifacts:
paths:
- build/libs/*.jar
docker build:
image: docker:latest
stage: build and push docker image
rules:
- if: $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_REF_NAME == "master"
variables:
TAG_NAME: "latest"
- if: $CI_COMMIT_BRANCH == "develop" || $CI_COMMIT_REF_NAME == "develop"
variables:
TAG_NAME: "develop"
script:
- apk add --update --no-cache curl py3-pip py3-virtualenv
- python3 -m venv /tmp/venv
- source /tmp/venv/bin/activate
- pip install awscli
- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
- aws configure set region ap-northeast-2
- docker build -t $DOCKER_IMAGE .
# ECR 리포지토리 - 푸시 명령에서 확인 가능
# docker tag $DOCKER_IMAGE:latest 730335597998.dkr.ecr.ap-northeast-2.amazonaws.com/$DOCKER_IMAGE:$TAG_NAME
- docker tag $DOCKER_IMAGE:latest 336805808295.dkr.ecr.ap-northeast-2.amazonaws.com/$DOCKER_IMAGE:$TAG_NAME
# aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 730335597998.dkr.ecr.ap-northeast-2.amazonaws.com
- aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 336805808295.dkr.ecr.ap-northeast-2.amazonaws.com
# docker push 730335597998.dkr.ecr.ap-northeast-2.amazonaws.com/$DOCKER_IMAGE:$TAG_NAME
- docker push 336805808295.dkr.ecr.ap-northeast-2.amazonaws.com/$DOCKER_IMAGE:$TAG_NAME
deploy:
image: python:3.9-slim
stage: deploy
script:
- python3 -m venv /tmp/venv
- source /tmp/venv/bin/activate
- pip install awscli
- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
- aws configure set region ap-northeast-2
- aws ecs update-service --cluster project-cluster --service project-01-service --task-definition project-01-task:1 --force-new-deployment
작성이 끝나면 PUSH를 해보자

변경내용들을 Commit and Push해주자

커밋된 상태

Build - Pipelines 클릭

깃랩 ci파일을 설정해두어서 파이프라인이 돌아가는 모습이다

작업에 성공했다면 배포된 모습을 확인해주자

ecs > 클러스터 > 서비스 조회후 로드밸런서를 조회해보자

우하단 DNS이름이 접속경로다
http://project-01-lb-2036043999.ap-northeast-2.elb.amazonaws.com/sample

컨트롤러에 입력했던 내용이 출력되면 배포 정상 성공
확인했으니 요금부과 안되도록 다음 포스팅에서 다시 내리는 작업 시행할 예정