Skip to content

Merge pull request #163 from DguFarmSystem/develop #38

Merge pull request #163 from DguFarmSystem/develop

Merge pull request #163 from DguFarmSystem/develop #38

Workflow file for this run

name: 🌱Farm Website CI/CD pipeline on development environment🌱
on:
push:
branches: [ "release/v**" ]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 📂 빌드 전에 환경변수를 로드하도록 설정
- name: Create application.yml for build
run: |
mkdir -p ./src/main/resources
echo "${{ secrets.DEVELOPMENT_APPLICATION }}" > ./src/main/resources/application.yml
# Gradle 캐시 설정 (Gradle Wrapper 포함)
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ runner.os }}-
- name: Build with Gradle Wrapper (Skip Tests)
run: ./gradlew build -x test
- name: 버젼 정보 가져오기
id: vars
run: echo "::set-output name=version::${GITHUB_REF#refs/heads/release/v}"
# Docker 빌드 및 Docker Hub에 푸시
- name: Docker build & push to Docker Hub
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
docker build -t ${{ secrets.DOCKER_USERNAME }}/farm-dev:${{ steps.vars.outputs.version }} .
docker push ${{ secrets.DOCKER_USERNAME }}/farm-dev:${{ steps.vars.outputs.version }}
docker logout
# TAG를 .env에 담아서 EC2에 전송
- name: Create .env file with version tag
run: echo "TAG=${{ steps.vars.outputs.version }}" > env.dev
- name: Upload .env to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.DEV_EC2_HOST }}
username: ubuntu
key: ${{ secrets.DEV_EC2_PRIVATE_KEY }}
source: "env.dev"
target: "~/"
# EC2에 배포
- name: Docker image pull & deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DEV_EC2_HOST }}
username: ubuntu
key: ${{ secrets.DEV_EC2_PRIVATE_KEY }}
script: |
set -e
echo "📂 yml 파일을 저장할 디렉토리 생성"
sudo mkdir -p /home/ubuntu/app/src/main/resources
sudo chown -R ubuntu:ubuntu /home/ubuntu/app
sudo chmod -R 755 /home/ubuntu/app
echo "📄 yml 파일 생성 및 GitHub Secrets 값 적용"
echo "${{ secrets.DEVELOPMENT_APPLICATION }}" | sudo tee /home/ubuntu/app/src/main/resources/application.yml > /dev/null
sudo chmod 644 /home/ubuntu/app/src/main/resources/application.yml
echo "🚀 배포 스크립트 실행"
chmod +x ~/deploy.sh
~/deploy.sh
echo "🧹 사용하지 않는 Docker 이미지 정리"
docker image prune -f