Skip to content

setting: workflow 수정 #119

setting: workflow 수정

setting: workflow 수정 #119

Workflow file for this run

name: Build Image & Deploy (DEV)
on:
push:
branches:
- dev
workflow_dispatch:
permissions:
contents: read
jobs:
CI-CD:
runs-on: [ self-hosted, dev ]
steps:
# 1. 소스 체크아웃
- name: Checkout source
uses: actions/checkout@v4
# 2. JDK 설정
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 21
# 3. Gradle 캐시
- name: Cache Gradle
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# 4. application.yml 생성
- name: Create application.yml
run: |
mkdir -p src/main/resources
echo "${{ secrets.YML }}" > src/main/resources/application.yml
# 5. Firebase key 생성
- name: Create firebase-key.json
uses: jsdaniell/create-json@1.1.2
with:
name: firebase-key.json
json: ${{ secrets.FIREBASE_KEY }}
- name: Move firebase key
run: |
mkdir -p src/main/resources
mv firebase-key.json src/main/resources/firebase-key.json
# 6. Gradle 빌드
- name: Build with Gradle
run: |
./gradlew bootJar
# 7. DockerHub 로그인
- name: Docker login
run: |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
# 8. Docker 이미지 빌드 & 푸시
- name: Build & Push Docker image
run: |
docker build -f Dockerfile.dev -t ${{ secrets.DOCKERHUB_USERNAME }}/feelin-dev:latest .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/feelin-api:latest
# 9. 배포 (서버 내부 실행)
- name: Deploy on prod server
run: |
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/feelin-api:latest
docker compose up -d
docker image prune -f