1- name : CI/CD - Build, Push and Deploy
1+ name : CI/CD - 도커 컴포즈를 이용한 빌드, 푸시, 배포
22
33on :
44 push :
@@ -11,32 +11,31 @@ concurrency:
1111jobs :
1212 build-and-push :
1313 runs-on : ubuntu-latest
14-
14+
1515 env :
1616 AWS_REGION : ap-northeast-2
1717 ECR_REGISTRY : 118497224929.dkr.ecr.ap-northeast-2.amazonaws.com
1818 ECR_REPOSITORY : clip-trip/server
1919 IMAGE_TAG : latest
2020
2121 steps :
22- - name : Checkout source
22+ - name : 소스코드 체크아웃
2323 uses : actions/checkout@v4
2424
25- - name : Set up Java
25+ - name : 자바 환경 설정
2626 uses : actions/setup-java@v4
2727 with :
2828 distribution : ' temurin'
2929 java-version : ' 21'
3030
31- - name : make application-prod .yml
31+ - name : application.yml 파일 생성
3232 run : |
3333 mkdir -p ./src/main/resources
3434 cd ./src/main/resources
35- touch ./application-dev.yml
3635 echo "${{ secrets.APPLICATION_PROD }}" > ./application.yml
3736 shell : bash
3837
39- - name : Gradle Caching
38+ - name : Gradle 캐싱
4039 uses : actions/cache@v4
4140 with :
4241 path : |
@@ -45,23 +44,20 @@ jobs:
4544 restore-keys : |
4645 ${{ runner.os }}-gradle-
4746
48- - name : Build Spring Boot App
47+ - name : 스프링 부트 앱 빌드
4948 run : ./gradlew clean bootJar -x test
5049
51- - name : Copy jar for Docker
52- run : cp build/libs/*.jar app.jar
53-
54- - name : Configure AWS Credentials
50+ - name : AWS 자격 증명 설정
5551 uses : aws-actions/configure-aws-credentials@v4
5652 with :
5753 aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
5854 aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
5955 aws-region : ${{ env.AWS_REGION }}
6056
61- - name : Log in to Amazon ECR
57+ - name : Amazon ECR 로그인
6258 uses : aws-actions/amazon-ecr-login@v2
6359
64- - name : Build and Push Docker Image
60+ - name : 도커 이미지 빌드 및 푸시
6561 run : |
6662 IMAGE_URI=$(aws sts get-caller-identity --query "Account" --output text).dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
6763 docker build -t $IMAGE_URI .
@@ -72,36 +68,27 @@ jobs:
7268 needs : [ build-and-push ]
7369
7470 steps :
75- - name : Deploy to EC2 via SSH
71+ - name : 소스코드 체크아웃
72+ uses : actions/checkout@v4
73+
74+ - name : SSH를 통해 EC2에 배포
7675 uses : appleboy/ssh-action@v0.1.7
7776 with :
7877 host : ${{ secrets.EC2_HOST }}
7978 username : ec2-user
8079 key : ${{ secrets.EC2_SSH_PRIVATE_KEY }}
8180 script : |
8281 set -eux
83-
84- # EC2 서버 내부에서 환경 변수 직접 정의
85- AWS_REGION="ap-northeast-2"
86- ECR_REGISTRY="118497224929.dkr.ecr.ap-northeast-2.amazonaws.com"
87- ECR_REPOSITORY="clip-trip/server"
88- IMAGE_TAG="latest"
89-
90- CONTAINER_NAME=clip-trip-server
91- IMAGE_URI=${ECR_REGISTRY}/${ECR_REPOSITORY}:${IMAGE_TAG}
9282
93- echo "AWS_REGION: ${AWS_REGION}"
94- echo "ECR_REGISTRY: ${ECR_REGISTRY}"
95- echo "IMAGE_URI: ${IMAGE_URI}"
83+ # ECR 환경 변수 설정
84+ export AWS_REGION="ap-northeast-2"
85+ export ECR_REGISTRY="118497224929.dkr.ecr.ap-northeast-2.amazonaws.com"
86+ export ECR_REPOSITORY="clip-trip/server"
87+ export IMAGE_TAG="latest"
9688
97- # ECR 로그인 및 최신 이미지 풀
89+ # ECR 로그인
9890 aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY}
99- docker pull ${IMAGE_URI}
100-
101- # 기존 컨테이너 중지 및 삭제 (오류 무시)
102- docker stop "$CONTAINER_NAME" || true
103- docker rm "$CONTAINER_NAME" || true
10491
105- # 새로운 컨테이너 실행
106- echo "Running new container $CONTAINER_NAME"
107- docker run -d --name "$CONTAINER_NAME" -p 8080:8080 ${IMAGE_URI}
92+ # 도커 컴포즈로 배포
93+ # 'up' 명령어가 docker-compose.yml 파일을 현재 디렉토리에서 찾음.
94+ docker-compose up -d --force-recreate
0 commit comments