1- name : Build Image & Deploy (DEV)
1+ name : Build Image & Push of Dev server
22
33on :
44 push :
55 branches :
6- - main
6+ [ "dev" ]
77 workflow_dispatch :
88
99permissions :
@@ -12,21 +12,16 @@ permissions:
1212jobs :
1313 CI-CD :
1414 runs-on : [ self-hosted, dev ]
15-
1615 steps :
17- # 1. 소스 체크아웃
18- - name : Checkout source
19- uses : actions/checkout@v4
16+ - uses : actions/checkout@v4
2017
21- # 2. JDK 설정
22- - name : Set up JDK 21
18+ - name : set up JDK 21
2319 uses : actions/setup-java@v3
2420 with :
25- distribution : temurin
26- java-version : 21
21+ distribution : ' temurin'
22+ java-version : ' 21 '
2723
28- # 3. Gradle 캐시
29- - name : Cache Gradle
24+ - name : cache gradle
3025 uses : actions/cache@v3
3126 with :
3227 path : |
@@ -36,43 +31,87 @@ jobs:
3631 restore-keys : |
3732 ${{ runner.os }}-gradle-
3833
39- # 4. application.yml 생성
40- - name : Create application.yml
34+ - name : overwrite application.yml
35+ if : |
36+ contains(github.ref, 'dev')
4137 run : |
42- mkdir -p src/main/resources
38+ mkdir -p ./ src/main/resources
4339 echo "${{ secrets.YML }}" > src/main/resources/application.yml
40+ shell : bash
41+
42+ - name : set up redis
43+ uses : supercharge/redis-github-action@1.7.0
44+ with :
45+ redis-version : 6
4446
45- # 5. Firebase key 생성
46- - name : Create firebase-key. json
47+ - name : create-json
48+ id : create- json
4749 uses : jsdaniell/create-json@1.1.2
4850 with :
49- name : firebase-key.json
51+ name : " firebase-key.json"
5052 json : ${{ secrets.FIREBASE_KEY }}
5153
52- - name : Move firebase key
54+ - name : move firebase- key.json to src/main/resources
5355 run : |
54- mkdir -p src/main/resources
55- mv firebase-key.json src/main/resources/firebase-key.json
56+ mkdir -p ./src/main/resources
57+ cp firebase-key.json ./src/main/resources/firebase-key.json
58+ shell : bash
5659
57- # 6. Gradle 빌드
58- - name : Build with Gradle
60+ - name : build with gradle
5961 run : |
60- ./gradlew bootJar
62+ ./gradlew bootjar
6163
62- # 7. DockerHub 로그인
63- - name : Docker login
64- run : |
65- docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
64+ - name : login into docker
65+ uses : docker/login-action@v2
66+ with :
67+ username : ${{ secrets.DOCKERHUB_USERNAME }}
68+ password : ${{ secrets.DOCKERHUB_PASSWORD }}
6669
67- # 8. Docker 이미지 빌드 & 푸시
68- - name : Build & Push Docker image
70+ - name : build docker image & push to docker hub
71+ if : contains(github.ref, 'dev')
6972 run : |
70- docker build -f Dockerfile.prod -t ${{ secrets.DOCKERHUB_USERNAME }}/feelin-api:latest .
71- docker push ${{ secrets.DOCKERHUB_USERNAME }}/feelin-api:latest
73+ pwd
74+ docker build -f Dockerfile.dev --platform linux/amd64 -t ${{ secrets.DOCKERHUB_USERNAME }}/feelin-dev:latest .
75+ docker push ${{ secrets.DOCKERHUB_USERNAME }}/feelin-dev:latest
7276
73- # 9. 배포 (서버 내부 실행)
74- - name : Deploy on prod server
75- run : |
76- docker pull ${{ secrets.DOCKERHUB_USERNAME }}/feelin-api:latest
77- docker compose up -d
78- docker image prune -f
77+ - name : send deploy file to dev server
78+ uses : appleboy/scp-action@master
79+ with :
80+ host : ${{ secrets.HOST_DEV }}
81+ username : ubuntu
82+ key : ${{ secrets.NEW_DEV_KEY }}
83+ source : ./scripts/deploy-dev.sh
84+ target : /home/ubuntu/
85+
86+ - name : send docker compose file to dev server
87+ uses : appleboy/scp-action@master
88+ with :
89+ host : ${{ secrets.HOST_DEV }}
90+ username : ubuntu
91+ key : ${{ secrets.NEW_DEV_KEY }}
92+ source : ./docker-compose-dev.yml
93+ target : /home/ubuntu/
94+
95+ - name : send firebase key file to dev server
96+ uses : appleboy/scp-action@master
97+ with :
98+ host : ${{ secrets.HOST_DEV }}
99+ username : ubuntu
100+ key : ${{ secrets.NEW_DEV_KEY }}
101+ source : firebase-key.json
102+ target : /home/ubuntu/
103+
104+ - name : deploy to dev server
105+ uses : appleboy/ssh-action@master
106+ id : deploy-dev
107+ if : contains(github.ref, 'dev')
108+ with :
109+ host : ${{ secrets.HOST_DEV }}
110+ username : ubuntu
111+ key : ${{ secrets.NEW_DEV_KEY }}
112+ envs : GITHUB_SHA
113+ script : |
114+ docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
115+ chmod 777 /home/ubuntu/scripts/deploy-dev.sh
116+ /home/ubuntu/scripts/deploy-dev.sh
117+ docker image prune -f
0 commit comments