-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8b18c76
commit 72ce26a
Showing
1 changed file
with
82 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
name: Kerdy Backend Prod Server CI/CD | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: [ backend-main ] | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-22.04 | ||
defaults: | ||
run: | ||
working-directory: backend/emm-sale | ||
services: | ||
mysql: | ||
image: mysql:8.0.28 | ||
env: | ||
MYSQL_USER: user | ||
MYSQL_PASSWORD: password | ||
MYSQL_ROOT_PASSWORD: 1234 | ||
MYSQL_DATABASE: kerdy | ||
ports: | ||
- 3306:3306 | ||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | ||
|
||
steps: | ||
- name: workflow_dispatch에서 지정한 branch로 checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: firebase key 생성 | ||
run: | | ||
echo "${{ secrets.FIREBASE_KEY }}" > firebase-kerdy.json | ||
- name: firebase key 이동 | ||
run: | | ||
cp firebase-kerdy.json src/main/resources | ||
- name: JDK 11로 설정 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: 11 | ||
distribution: 'corretto' | ||
|
||
- name: Gradle에 실행 권한 부여 | ||
run: chmod +x gradlew | ||
|
||
- name: Actions/Caches에 Gradle 라이브러리 캐싱 | ||
id: cache-gradle | ||
uses: actions/cache@v3 | ||
with: | ||
path: ~/.gradle/caches | ||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} | ||
restore-keys: ${{ runner.os }}-gradle- | ||
# RestDocs의 index.html 업데이트 반영을 위해 2번 build하도록 함 | ||
- name: gradle 빌드 | ||
run: ./gradlew build && ./gradlew build | ||
|
||
- name: 도커 빌더 생성 및 부팅 | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: 도커 허브에 로그인 | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: 도커 이미지 빌드 및 푸시 | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
file: ./Dockerfile | ||
push: true | ||
tags: ${{ secrets.DOCKERHUB_USERNAME }}/kerdy:latest | ||
|
||
# deploy: | ||
# needs: build | ||
# name: 배포 | ||
# runs-on: [ self-hosted, label-prod ] | ||
# steps: | ||
# - name: 도커 실행 | ||
# run: | | ||
# sudo docker stop kerdy && docker rm kerdy && docker rmi ${{ DOCKERHUB_USERNAME }}/kerdy | ||
# sudo docker run -d -p 8080:8080 --name kerdy |