1+ name : Deploy
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+
8+ jobs :
9+ CI-CD :
10+ runs-on : ubuntu-latest
11+ steps :
12+ - uses : actions/checkout@v3
13+ - name : Set up JDK 17
14+ uses : actions/setup-java@v3
15+ with :
16+ java-version : 17
17+ distribution : ' temurin'
18+
19+ - name : Grant execute permissions for gradlew
20+ run : chmod +x ./gradlew
21+
22+ - name : Verify Gradle version
23+ run : ./gradlew --version
24+
25+ # gradle build
26+ - name : Build with Gradle
27+ run : ./gradlew build -x test
28+
29+ # docker build & push to production
30+ - name : Docker build & push to prod
31+ if : contains(github.ref, 'main')
32+ run : |
33+ docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
34+ docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/embitips_back .
35+ docker push ${{ secrets.DOCKER_USERNAME }}/embitips_back
36+
37+ # # deploy to production
38+ - name : Deploy to prod
39+ uses : appleboy/ssh-action@master
40+ id : deploy-prod
41+ if : contains(github.ref, 'main')
42+ with :
43+ host : ${{ secrets.HOST_PROD }} # EC2 퍼블릭 IPv4 DNS
44+ username : ${{ secrets.USERNAME }}
45+ key : ${{ secrets.PRIVATE_KEY }}
46+ envs : GITHUB_SHA
47+ script : |
48+ # 기존 컨테이너 중지 및 삭제
49+ sudo docker stop embitips_back || true
50+ sudo docker rm embitips_back || true
51+ sudo docker ps
52+ sudo docker pull ${{ secrets.DOCKER_USERNAME }}/embitips_back
53+ sudo docker run -d -p 8080:8080 -e DB_URL="${{ secrets.DB_URL }}" -e DB_USERNAME="${{ secrets.DB_USERNAME }}" -e DB_PASSWORD="${{ secrets.DB_PASSWORD }}" --name embitips_back ${{ secrets.DOCKER_USERNAME }}/embitips_back
54+ sudo docker image prune -f
0 commit comments