Update gradle.yml #63
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
| name: Deploy with Docker Compose | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1. 레포지토리 체크아웃 | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| # 2. SSH 키 설정 | |
| - name: Set up SSH private key | |
| run: | | |
| echo "${{ secrets.SSH_KEY }}" > private_key.pem | |
| chmod 600 private_key.pem | |
| # 3. .env 파일 생성 | |
| - name: Generate .env for Docker Compose | |
| run: | | |
| echo "AZURE_DB_USERNAME=${{ secrets.AZURE_DB_USERNAME }}" >> .env | |
| echo "AZURE_DB_PASSWORD=${{ secrets.AZURE_DB_PASSWORD }}" >> .env | |
| echo "GEMINI_KEY=${{ secrets.GEMINI_KEY }}" >> .env | |
| echo "GITHUB_TOKEN=${{ secrets.HUB_TOKEN }}" >> .env | |
| echo "JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}" >> .env | |
| echo "JWT_ACCESS_TOKEN_TIME=${{ secrets.JWT_ACCESS_TOKEN_TIME }}" >> .env | |
| echo "JWT_REFRESH_TOKEN_TIME=${{ secrets.JWT_REFRESH_TOKEN_TIME }}" >> .env | |
| echo "GITHUB_CLIENT_ID=${{ secrets.CLIENT_ID }}" >> .env | |
| echo "GITHUB_CLIENT_SECRET=${{ secrets.CLIENT_SECRET }}" >> .env | |
| # 4. docker-compose.yml 업로드 | |
| - name: Upload docker-compose.yml to Azure VM | |
| run: | | |
| scp -i private_key.pem -o StrictHostKeyChecking=no docker-compose.yml \ | |
| ${{ secrets.AZURE_VM_USER }}@${{ secrets.AZURE_VM_HOST }}:/home/ubuntu/fossistant/docker-compose.yml | |
| # 5. .env 업로드 | |
| - name: Upload .env to Azure VM | |
| run: | | |
| scp -i private_key.pem -o StrictHostKeyChecking=no .env \ | |
| ${{ secrets.AZURE_VM_USER }}@${{ secrets.AZURE_VM_HOST }}:/home/ubuntu/fossistant/.env | |
| # 6. SSH로 접속하여 배포 | |
| - name: SSH to Azure VM and Deploy | |
| uses: appleboy/ssh-action@v0.1.3 | |
| with: | |
| host: ${{ secrets.AZURE_VM_HOST }} | |
| username: ${{ secrets.AZURE_VM_USER }} | |
| key: ${{ secrets.SSH_KEY }} | |
| port: 22 | |
| script: | | |
| cd /home/ubuntu/fossistant | |
| echo "🧼 Killing any process listening on port 6379..." | |
| # (선택 사항) Redis가 사용 중인 포트를 잡고 있는 프로세스 강제 종료 | |
| sudo fuser -k 6379/tcp || true | |
| echo "🧼 Forcibly removing existing containers (redis, fossistant) if they exist..." | |
| docker rm -f redis fossistant || true | |
| echo "🧹 Stopping old containers and removing orphans..." | |
| docker compose down --remove-orphans || true | |
| docker compose rm -f || true | |
| echo "✅ Pulling latest images..." | |
| docker compose pull | |
| echo "🚀 Starting new containers..." | |
| docker compose up -d --build | |
| echo "🎉 Deployment complete! Containers are up and running." |