Merge pull request #132 from UMC-TripPiece/chore/131 #60
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
' |