Skip to content

feat: json 파일로 명언 생성 기능 #25

feat: json 파일로 명언 생성 기능

feat: json 파일로 명언 생성 기능 #25

Workflow file for this run

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 컨테이너 실행