Update deploy-dev.yml #339
This file contains hidden or 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
| # 도커 허브에 이미지 push 후 서버에 배포하는 방식 (25.10.30 이후) | |
| name: Front Test Server (Develop) | |
| on: | |
| push: | |
| branches: | |
| - develop # develop 브랜치에 push가 발생하면 실행 | |
| jobs: | |
| build-and-push-image: # 도커 이미지 빌드 및 도커 허브 push | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: ENV 파일 생성 | |
| run: | | |
| echo "NEXT_PUBLIC_API_BASE_URL=${{ secrets.NEXT_PUBLIC_API_BASE_URL }}" > .env | |
| echo "NEXT_PUBLIC_KAKAO_CLIENT_ID=${{ secrets.NEXT_PUBLIC_KAKAO_CLIENT_ID }}" >> .env | |
| echo "NEXT_PUBLIC_GOOGLE_CLIENT_ID=${{ secrets.NEXT_PUBLIC_GOOGLE_CLIENT_ID }}" >> .env | |
| echo "NEXT_PUBLIC_CLARITY_PROJECT_ID=${{ secrets.NEXT_PUBLIC_CLARITY_PROJECT_ID }}" >> .env | |
| echo "NEXT_PUBLIC_GOOGLE_SHEETS_ID=${{ secrets.NEXT_PUBLIC_GOOGLE_SHEETS_ID }}" >> .env | |
| echo "GOOGLE_SERVICE_ACCOUNT_EMAIL=${{ secrets.GOOGLE_SERVICE_ACCOUNT_EMAIL }}" >> .env | |
| echo "GOOGLE_PRIVATE_KEY=${{ secrets.GOOGLE_PRIVATE_KEY }}" >> .env | |
| echo "NEXT_PUBLIC_STRAPI_URL=${{ secrets.NEXT_PUBLIC_STRAPI_URL }}" >> .env | |
| echo "NEXT_PUBLIC_TOSS_CLIENT_KEY=${{ secrets.NEXT_PUBLIC_TOSS_CLIENT_KEY }}" >> .env | |
| - name: DockerHub 로그인 | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
| - name: Docker 이미지 빌드 및 push | |
| run: | | |
| docker build -f Dockerfile.dev -t zerooneitkr/frontend:develop . | |
| docker push zerooneitkr/frontend:develop | |
| deploy-image-to-server: # 도커 허브 pull 후 서버에 배포 | |
| runs-on: ubuntu-latest | |
| needs: build-and-push-image | |
| steps: | |
| - name: Install cloudflared | |
| run: | | |
| echo "Downloading cloudflared..." | |
| curl -L --output /tmp/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 | |
| chmod +x /tmp/cloudflared | |
| sudo mv /tmp/cloudflared /usr/local/bin/cloudflared | |
| cloudflared --version || echo "cloudflared 설치 확인 실패" | |
| - name: Install sshpass | |
| run: | | |
| echo "Installing sshpass..." | |
| sudo apt-get update -qq | |
| sudo apt-get install -y -qq sshpass | |
| sshpass -V || echo "sshpass 설치 확인 실패" | |
| - name: Setup SSH config | |
| run: | | |
| echo "Setting up SSH config..." | |
| mkdir -p ~/.ssh | |
| chmod 700 ~/.ssh | |
| # known_hosts 설정 (실패해도 계속 진행) | |
| ssh-keyscan -p 24 -H ssh.zeroone.it.kr >> ~/.ssh/known_hosts 2>&1 || echo "ssh-keyscan 실패 (계속 진행)" | |
| # SSH config 생성 | |
| cat > ~/.ssh/config << 'SSHCONFIG' | |
| Host ssh.zeroone.it.kr | |
| HostName ssh.zeroone.it.kr | |
| User zero_one | |
| Port 24 | |
| ProxyCommand cloudflared access ssh --hostname %h | |
| StrictHostKeyChecking no | |
| SSHCONFIG | |
| chmod 600 ~/.ssh/config | |
| echo "SSH config 생성 완료" | |
| cat ~/.ssh/config | |
| - name: 서버 배포 | |
| run: | | |
| sshpass -p '${{ secrets.SSH_PASSWORD }}' ssh ssh.zeroone.it.kr << EOF | |
| echo "사용하지 않는 컨테이너, 이미지, 네트워크 정리 중 (볼륨제외)..." | |
| sudo docker stop frontend-dev || true | |
| sudo docker rm frontend-dev || true | |
| sudo docker system prune -a -f | |
| # 여기다 도커 컴포즈 파일 갖다놓았기 때문임 | |
| cd ~/front/study-platform-client-dev | |
| echo "도커 이미지 pull" | |
| sudo docker pull zerooneitkr/frontend:develop | |
| echo "도커 컴포즈 재시작" | |
| sudo docker compose -f docker-compose.dev.yml up -d --build | |
| echo "테스트 서버 배포 완료" | |
| EOF |