1+ name : Deploy To EC2
2+
3+ on :
4+ push :
5+ branches :
6+ - " feat/#49-cicd-setup"
7+
8+ jobs :
9+ Deploy :
10+ runs-on : ubuntu-latest
11+ steps :
12+ - name : Github Repository 파일 불러오기
13+ uses : actions/checkout@v4
14+
15+ - name : JDK 21버전 설치
16+ uses : actions/setup-java@v4
17+ with :
18+ distribution : temurin
19+ java-version : 21
20+
21+ - name : application.yml (공통) 파일 생성
22+ run : |
23+ mkdir -p ./src/main/resources
24+ echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml
25+
26+ - name : application-local.yml (개발용) 파일 생성
27+ run : |
28+ echo "${{ secrets.APPLICATION_LOCAL_YML }}" > ./src/main/resources/application-local.yml
29+
30+ - name : 테스트 및 빌드하기
31+ run : ./gradlew clean build
32+
33+ - name : AWS credentials 인증 설정 (Resource 접근 권한)
34+ uses : aws-actions/configure-aws-credentials@v4
35+ with :
36+ aws-region : ap-northeast-2
37+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
38+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
39+
40+ - name : ECR에 로그인
41+ id : login-ecr
42+ uses : aws-actions/amazon-ecr-login@v2
43+
44+ - name : docker 이미지 생성
45+ run : docker build -t remu-server .
46+
47+ - name : docker 이미지에 Tag 붙이기
48+ run : docker tag remu-server ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
49+
50+ - name : ECR에 docker 이미지 push
51+ run : docker push ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
52+
53+ - name : SSH로 EC2에 접속 및 배포 실행
54+ uses : appleboy/ssh-action@v1.0.3
55+ with :
56+ host : ${{ secrets.EC2_HOST }}
57+ username : ${{ secrets.EC2_USERNAME }}
58+ key : ${{ secrets.EC2_PRIVATE_KEY }}
59+ script_stop : true
60+ script : |
61+ docker stop remu-server || true
62+ docker rm remu-server || true
63+ docker pull ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
64+ docker run -d --name remu-server -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
0 commit comments