1- name : Production Server CI/CD with Gradle and Docker
1+ name : Development Server CI/CD with Gradle and Docker
22
33on :
44 push :
55 branches : [ "develop" ]
66 pull_request :
77 branches : [ "develop" ]
88
9+ env :
10+ DOCKER_IMAGE : ${{ secrets.DOCKER_USERNAME }}/billilge-dev
11+
912jobs :
1013 build-docker-image :
1114 runs-on : ubuntu-latest
1215 permissions :
1316 contents : read
1417 steps :
1518 - uses : actions/checkout@v4
19+
1620 - name : Set up JDK 17
1721 uses : actions/setup-java@v4
1822 with :
@@ -31,38 +35,35 @@ jobs:
3135 - name : Build with Gradle Wrapper
3236 run : ./gradlew clean build -x test
3337
34- # Docker 관련 작업들은 push 시에만 실행되도록 설정
35- - name : docker image build
38+ - name : Set up Docker Buildx
3639 if : github.event_name == 'push'
37- run : docker build -f Dockerfile-dev -t ${{ secrets.DOCKER_USERNAME }}/billilge-dev:latest .
40+ uses : docker/setup-buildx-action@v3
3841
39- # DockerHub 로그인
40- - name : docker login
42+ - name : Login to Docker Hub
4143 if : github.event_name == 'push'
4244 uses : docker/login-action@v3
4345 with :
4446 username : ${{ secrets.DOCKER_USERNAME }}
4547 password : ${{ secrets.DOCKER_PASSWORD }}
4648
47- # Docker Hub 이미지 푸시
48- - name : docker Hub push
49+ - name : Build and Push Docker Image
4950 if : github.event_name == 'push'
50- run : docker push ${{ secrets.DOCKER_USERNAME }}/billilge-dev:latest
51+ uses : docker/build-push-action@v5
52+ with :
53+ context : .
54+ file : Dockerfile-dev
55+ push : true
56+ tags : ${{ env.DOCKER_IMAGE }}:latest
5157
52- # run-docker-image-on-ec2:
53- # needs: build-docker-image
54- # #push 했을 때만 배포가 진행되도록
55- # if: github.event_name == 'push'
56- # runs-on: self-hosted
57- # steps:
58- # - name: docker pull
59- # run: sudo docker pull ${{ secrets.DOCKER_USERNAME }}/billilge:latest
60- #
61- # - name: docker stop container
62- # run: sudo docker stop springboot || true
63- #
64- # - name: docker run new container
65- # run: sudo docker run --env-file /home/ubuntu/billilge.env --name springboot --rm -d -p 8080:8080 ${{ secrets.DOCKER_USERNAME }}/billilge:latest
66- #
67- # - name: delete old docker image
68- # run: sudo docker image prune -f
58+ deploy :
59+ needs : build-docker-image
60+ if : github.event_name == 'push'
61+ runs-on : ubuntu-latest
62+ steps :
63+ - name : Deploy to CapRover
64+ uses : caprover/deploy-from-github@v1.1.2
65+ with :
66+ server : ${{ secrets.CAPROVER_SERVER }}
67+ app : ${{ secrets.CAPROVER_DEV_APP_NAME }}
68+ token : ${{ secrets.CAPROVER_DEV_APP_TOKEN }}
69+ image : ${{ env.DOCKER_IMAGE }}:latest
0 commit comments