Skip to content

feat:typo

feat:typo #23

Workflow file for this run

name: Deploy
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
deploy:
name: deploy
runs-on: ubuntu-latest
env:
image-name: flow-erd
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
EC2_USER: ${{ secrets.EC2_USER }}
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_KEY: ${{ secrets.EC2_KEY }}
COMPOSE_FILE_PATH: "/home/ubuntu/FlowERD" # Docker Compose 파일을 업로드할 EC2 내의 경로
steps:
# 소스 코드 체크아웃
- name: Checkout Source
uses: actions/checkout@v4
# 시간대 설정
- name: Setup timezone
uses: zcong1993/setup-timezone@v2.0.0
with:
timezone: Asia/Seoul
# 자바 17 환경설정
- name: Setup Java17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'zulu'
# Gradle 실행권한 부여
- name: Grant execute permission to gradlew
run: chmod +x ./gradlew
working-directory: ./
# Gradle 캐시 설정 (빌드 속도 향상)
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# Spring Boot 애플리케이션 테스트 실행
# - name: Test with gradle
# run: ./gradlew test
# Spring Boot 애플리케이션 빌드
- name: Build with gradle
run: ./gradlew clean build -x test
working-directory: ./
# Docker Hub 로그인
- name: Login docker hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ env.DOCKERHUB_PASSWORD }}
# Docker 이미지 빌드
- name: docker build
run: docker build -t ${{ env.DOCKERHUB_USERNAME }}/${{ env.image-name }} .
working-directory: ./
# Docker 이미지 푸시
- name: docker push
run: docker push ${{ env.DOCKERHUB_USERNAME }}/${{ env.image-name }}
working-directory: ./
# 키 설정
- name: Create SSH key file
run: echo "${{ secrets.EC2_KEY }}" > /tmp/EC2_KEY.pem
working-directory: ./
# 권한 설정
- name: Set permissions for SSH key file
run: chmod 600 /tmp/EC2_KEY.pem
working-directory: ./
# Docker Compose 파일을 EC2 서버에 업로드
- name: Upload Docker Compose file to EC2
run: scp -i /tmp/EC2_KEY.pem -o StrictHostKeyChecking=no ./docker-compose.yml ${{ env.EC2_USER }}@${{ env.EC2_HOST }}:${{ env.COMPOSE_FILE_PATH }}
working-directory: ./
# EC2에 배포
- name: Deploy to EC2
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_USER }}
key: ${{ env.EC2_KEY }}
script: |
cd ${{ env.COMPOSE_FILE_PATH }}
sudo docker compose pull
sudo docker compose stop application # 애플리케이션 컨테이너 중지
sudo docker compose rm -f application # 애플리케이션 컨테이너 삭제
sudo docker compose up -d