feat: json 파일로 명언 생성 기능 #25
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: | |
- master # master 브랜치에 push 이벤트 발생 시 실행 | |
pull_request: | |
branches: | |
- master # master 브랜치에 대한 pull request 이벤트 발생 시 실행 | |
jobs: | |
build: | |
runs-on: ubuntu-latest # 빌드 작업을 실행할 환경 설정 (최신 우분투) | |
steps: | |
- name: Checkout repository # GitHub repository 체크아웃 | |
uses: actions/checkout@v4 | |
- name: Set up Docker Buildx # Docker Buildx 설정 | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to DockerHub # DockerHub 로그인 | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} # GitHub Secrets DockerHub 사용자명 사용 | |
password: ${{ secrets.DOCKER_PASSWORD }} # GitHub Secrets DockerHub 비밀번호 사용 | |
- name: Build Docker image # Docker 이미지 빌드 | |
run: | | |
docker build . -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:${{ github.sha }} # Docker 이미지 빌드 및 태그 | |
docker tag ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:${{ github.sha }} ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:latest # latest 태그 추가 | |
- name: Push Docker image to Docker Hub # Docker hub에 이미지 push | |
run: | | |
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:${{ github.sha }} # 빌드된 이미지 push | |
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:latest # latest 태그 이미지 push | |
deploy: | |
runs-on: ubuntu-latest # 배포 작업을 실행할 환경 설정 (최신 우분투) | |
needs: build # build 작업이 성공적으로 완료된 후에만 실행 | |
steps: | |
- name: Checkout repository # GitHub repository 체크아웃 | |
uses: actions/checkout@v4 | |
- name: Deploy to server # 서버에 SSH로 접속하여 배포 작업 수행 | |
uses: appleboy/ssh-action@v1.0.3 | |
with: | |
host: ${{ secrets.SERVER_IP }} # GitHub Secrets 서버 IP 사용 | |
username: ${{ secrets.SERVER_USER }} # GitHub Secrets 서버 사용자명 사용 | |
key: ${{ secrets.SSH_PRIVATE_KEY }} # GitHub Secrets SSH 개인 키 사용 | |
port: 22 # SSH 접속 포트 (기본: 22) | |
script: | | |
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:latest # 새로운 Docker 이미지 pull | |
sudo docker stop ${{ secrets.PROJECT_NAME }} || true # 기존 Docker 컨테이너 중지 (오류 무시) | |
sudo docker rm ${{ secrets.PROJECT_NAME }} || true # 기존 Docker 컨테이너 삭제 (오류 무시) | |
sudo docker run -d -p 3000:3000 --name ${{ secrets.PROJECT_NAME }} --env-file ${{ secrets.ENV_PATH }} ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}:latest # 새로운 Docker 컨테이너 실행 |