Skip to content

Merge pull request #132 from UMC-TripPiece/chore/131 #60

Merge pull request #132 from UMC-TripPiece/chore/131

Merge pull request #132 from UMC-TripPiece/chore/131 #60

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [ develop ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# JDK 17 설치
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '17'
# 소스 코드 체크아웃
- name: Checkout repository
uses: actions/checkout@v2
# application.yml 생성 및 Secrets 내용 반영
- name: Make application.yml
run: |
cd ./src/main/resources
touch application.yml
echo "${{ secrets.APPLICATION_YML }}" > ./application.yml
shell: bash
# Firebase JSON 생성
- name: Create config directory
run: mkdir -p ./src/main/resources/firebase/
- name: create-json
id: create-json
uses: jsdaniell/[email protected]
with:
name: "trippiece-fcm.json"
json: ${{ secrets.FIREBASE_JSON }}
dir: './src/main/resources/firebase/'
# Gradle 빌드 수행 (Docker 이미지 빌드에 필요한 파일 생성)
- name: Build with Gradle
run: |
chmod +x ./gradlew
./gradlew clean build -x test
# Docker 이미지 빌드 및 Docker Hub에 푸시
- name: Build and push Docker image
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
docker build -t ${{ secrets.DOCKER_USERNAME }}/trippiece:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/trippiece:latest
# EC2에 Docker 이미지 배포
- name: Deploy to EC2
env:
PRIVATE_KEY: ${{ secrets.EC2_SSH_KEY }}
HOST: ${{ secrets.EC2_HOST }}
USER: ubuntu
run: |
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
# EC2에 Docker 설치 (필요한 경우)
ssh -i private_key -o StrictHostKeyChecking=no ${USER}@${HOST} '
if ! command -v docker &> /dev/null; then
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ${USER} # 현재 사용자(ubuntu)를 docker 그룹에 추가
newgrp docker # 그룹 변경 적용 (로그아웃 후 재접속 필요할 수 있음)
fi
'
# EC2에서 Docker 이미지 pull 및 컨테이너 실행
ssh -i private_key -o StrictHostKeyChecking=no ${USER}@${HOST} '
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/trippiece:latest
sudo docker stop trippiece-container || true # 기존 컨테이너 정지 (존재하지 않으면 무시)
sudo docker rm trippiece-container || true # 기존 컨테이너 삭제 (존재하지 않으면 무시)
sudo docker run -d -p 8080:8080 --name trippiece-container ${{ secrets.DOCKER_USERNAME }}/trippiece:latest
'