Skip to content

Commit f657947

Browse files
committed
deploy: Caprover CD 배포 파이프라인 구축
dev/prod 워크플로우에 CapRover 배포 job 추가 및 Docker 빌드/푸시를 build-push-action으로 통합
1 parent ff2eab0 commit f657947

2 files changed

Lines changed: 52 additions & 51 deletions

File tree

.github/workflows/ci-cd_dev.yml

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
name: Production Server CI/CD with Gradle and Docker
1+
name: Development Server CI/CD with Gradle and Docker
22

33
on:
44
push:
55
branches: [ "develop" ]
66
pull_request:
77
branches: [ "develop" ]
88

9+
env:
10+
DOCKER_IMAGE: ${{ secrets.DOCKER_USERNAME }}/billilge-dev
11+
912
jobs:
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

.github/workflows/ci-cd_prod.yml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ on:
66
pull_request:
77
branches: [ "main" ]
88

9+
env:
10+
DOCKER_IMAGE: ${{ secrets.DOCKER_USERNAME }}/billilge
11+
912
jobs:
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,34 @@ 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 -t ${{ secrets.DOCKER_USERNAME }}/billilge: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:latest
51+
uses: docker/build-push-action@v5
52+
with:
53+
context: .
54+
push: true
55+
tags: ${{ env.DOCKER_IMAGE }}:latest
5156

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
57+
deploy:
58+
needs: build-docker-image
59+
if: github.event_name == 'push'
60+
runs-on: ubuntu-latest
61+
steps:
62+
- name: Deploy to CapRover
63+
uses: caprover/deploy-from-github@v1.1.2
64+
with:
65+
server: ${{ secrets.CAPROVER_SERVER }}
66+
app: ${{ secrets.CAPROVER_PROD_APP_NAME }}
67+
token: ${{ secrets.CAPROVER_PROD_APP_TOKEN }}
68+
image: ${{ env.DOCKER_IMAGE }}:latest

0 commit comments

Comments
 (0)