name: Deploy VConnect API on: push: branches: - main workflow_dispatch: jobs: test: name: Test Build runs-on: ubuntu-latest container: node:18-bullseye steps: - name: Checkout repository (internal) run: | echo "πŸ“₯ Internal git clone start" git clone --depth 1 https://gitea.mouse84.com/Kim.KANGHEE/vconnect-api.git . echo "πŸ“₯ Clone done" - name: Install Python run: | apt-get update apt-get install -y python3 python3-pip - name: Install dependencies run: | pip3 install --upgrade pip if [ -f requirements.txt ]; then pip3 install -r requirements.txt fi - name: Run basic tests run: | echo "βœ… Basic tests passed" deploy: name: Deploy to Server runs-on: ubuntu-latest needs: test if: github.ref == 'refs/heads/main' steps: - name: Deploy via SSH run: | set -e echo "πŸ” SSH key setup" mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H 192.168.0.97 >> ~/.ssh/known_hosts echo "πŸš€ Deploy start" ssh kdesk84@192.168.0.97 << 'EOF' set -e echo "πŸ“‚ Move to project directory" cd /data/vconnect-api echo "πŸ”„ Git Force Sync" git fetch --all git reset --hard origin/main echo "🐍 Checking Virtual Environment..." # [μ€‘μš” μˆ˜μ •] venv/bin/activate 파일이 μ—†μœΌλ©΄ κ°€μƒν™˜κ²½μ„ μƒˆλ‘œ 생성함 if [ ! -f "venv/bin/activate" ]; then echo "⚠️ venv not found or broken. Creating new virtual environment..." # Ubuntu 24.04μ—μ„œλŠ” python3-venv νŒ¨ν‚€μ§€κ°€ ν•„μš”ν•  수 있음 (μ—†μœΌλ©΄ μ—λŸ¬ λ‚  수 μžˆμœΌλ‹ˆ μ•„λž˜ μ°Έκ³ ) python3 -m venv venv echo "βœ… venv created." fi echo "🐍 Activate virtualenv" source venv/bin/activate echo "πŸ”„ stop service" sudo systemctl stop vconnect-api echo "πŸ“¦ Install dependencies" pip install -r requirements.txt echo "πŸ”„ Restart service" sudo systemctl restart vconnect-api echo "πŸ“‹ Service status" sudo systemctl status vconnect-api --no-pager -l echo "βœ… Deploy finished" EOF - name: Deployment Complete run: echo "πŸŽ‰ VConnect API deployment completed!"