Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 53 additions & 10 deletions .github/workflows/deploy.yml → .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,38 @@ name: EAT-SSU Server 개발 & 운영 서버 배포 파이프라인

on:
push:
branches: [ "main", "develop", "hotfix/deploy-prod-fail", "hotfix/deploy-dev-fail" ]
branches: [ "main", "develop" ]

permissions:
contents: read

jobs:
CI-CD:
name: CI/CD
build:
name: Build
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_DATABASE: eatssu_test
MYSQL_ROOT_PASSWORD: test
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h localhost"
--health-interval=10s
--health-timeout=5s
--health-retries=10
env:
EATSSU_DB_URL_TEST: jdbc:mysql://localhost:3306/eatssu_test
EATSSU_DB_USERNAME: root
EATSSU_DB_PASSWORD: test
EATSSU_AWS_ACCESS_KEY_DEV: dummy-access-key
EATSSU_AWS_SECRET_KEY_DEV: dummy-secret-key
EATSSU_SLACK_TOKEN: dummy-slack-token
steps:
- uses: actions/checkout@v3

- name: JDK 17 설치
uses: actions/setup-java@v3
with:
Expand All @@ -30,15 +51,15 @@ jobs:
${{ runner.os }}-gradle-

- name: dev 프로필 설정
if: github.ref_name == 'develop' || github.ref_name == 'hotfix/deploy-dev-fail'
if: github.ref_name == 'develop'
run: |
echo "spring:
profiles:
include: dev" > ./src/main/resources/application.yml
shell: bash

- name: prod 프로필 설정
if: github.ref_name == 'main' || github.ref_name == 'hotfix/deploy-prod-fail'
if: github.ref_name == 'main'
run: |
echo "spring:
profiles:
Expand All @@ -48,34 +69,56 @@ jobs:
- name: gradlew 실행 권한 부여
run: chmod +x gradlew

- name: 테스트용 JWT 시크릿 생성
run: echo "EATSSU_JWT_SECRET_TEST=$(openssl rand -base64 64 | tr -d '\n')" >> "$GITHUB_ENV"

- name: Gradle로 빌드
run: ./gradlew build -x test --no-daemon
run: ./gradlew build --no-daemon

- name: 빌드 산출물 확인
run: ls -lh build/libs/*.jar

- name: 빌드 산출물 업로드
uses: actions/upload-artifact@v4
with:
name: app-jar
path: build/libs/eat-ssu.jar

deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: 빌드 산출물 다운로드
uses: actions/download-artifact@v4
with:
name: app-jar
path: build/libs

- name: Docker Hub 로그인
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: prod 용 Docker 빌드 및 푸시
if: github.ref_name == 'main' || github.ref_name == 'hotfix/deploy-prod-fail'
if: github.ref_name == 'main'
run: |
docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}/eatssu-prod .
docker push ${{ secrets.DOCKER_REPO }}/eatssu-prod

- name: dev 서버 용 Docker 빌드 및 푸시
if: github.ref_name == 'develop' || github.ref_name == 'hotfix/deploy-dev-fail'
if: github.ref_name == 'develop'
run: |
docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}/eatssu-dev .
docker push ${{ secrets.DOCKER_REPO }}/eatssu-dev

- name: prod에 배포
uses: appleboy/ssh-action@master
id: deploy-prod
if: github.ref_name == 'main' || github.ref_name == 'hotfix/deploy-prod-fail'
if: github.ref_name == 'main'
with:
host: ${{ secrets.HOST_PROD }}
username: ${{ secrets.USERNAME }}
Expand Down Expand Up @@ -106,7 +149,7 @@ jobs:
- name: dev 서버에 배포
uses: appleboy/ssh-action@master
id: deploy-dev
if: github.ref_name == 'develop' || github.ref_name == 'hotfix/deploy-dev-fail'
if: github.ref_name == 'develop'
with:
host: ${{ secrets.HOST_DEV }}
username: ${{ secrets.USERNAME }}
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ src/main/java/ssu/eatssu/

### 배포

GitHub Actions(`deploy.yml`)로 Docker 이미지를 빌드하여 EC2에 SSH 배포한다. `prod`/`dev` 브랜치에 따라 배포 환경이 분기된다.
GitHub Actions(`cd.yml`)로 Docker 이미지를 빌드하여 EC2에 SSH 배포한다. `prod`/`dev` 브랜치에 따라 배포 환경이 분기된다.

## Commit Convention

Expand Down
Loading