From c7891cd992436a08d135eca8e9aeb34837cff910 Mon Sep 17 00:00:00 2001 From: Shanmuga Krishnan S M Date: Tue, 4 Aug 2026 11:16:12 +0530 Subject: [PATCH] ci: add GitHub Actions automated deployment workflow and CI/CD guide --- .github/workflows/deploy.yml | 42 ++++++++++++++++++ CICD_GUIDE.md | 84 ++++++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 .github/workflows/deploy.yml create mode 100644 CICD_GUIDE.md diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..719d4f0 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,42 @@ +name: Deploy RIT Freshers Hub to VPS + +on: + push: + branches: + - main + +jobs: + deploy: + name: Deploy to Live VPS + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: SSH into VPS and Deploy + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USERNAME }} + key: ${{ secrets.VPS_SSH_KEY }} + port: 22 + script: | + echo "🚀 Starting Automated CI/CD Deployment..." + cd /var/www/freshers-hub + + echo "📥 Pulling latest code from GitHub..." + git pull origin main + + echo "⚡ Building Frontend PWA..." + npm install --production=false + npm run build + + echo "🤖 Building Go Chatbot..." + cd /var/www/freshers-hub/chatbot-service + go build -o chatbot-service main.go + + echo "🔄 Restarting Systemd Services..." + systemctl restart springboot chatbot telegram-bot nginx + + echo "🎉 Deployment Completed Successfully!" diff --git a/CICD_GUIDE.md b/CICD_GUIDE.md new file mode 100644 index 0000000..9618ac6 --- /dev/null +++ b/CICD_GUIDE.md @@ -0,0 +1,84 @@ +# 🔄 RIT Freshers Hub - Step-by-Step CI/CD Pipeline Guide + +Automate your live server deployments with **GitHub Actions** so that whenever you run `git push origin main`, your website, backend, chatbot, and services update on your VPS automatically in 30 seconds! + +--- + +## 🏗️ How the CI/CD Pipeline Works + +```mermaid +graph LR + A[💻 Developer Pushes Code] -->|git push origin main| B[🐙 GitHub Repository] + B -->|Triggers Workflow| C[⚡ GitHub Actions Runner] + C -->|Secure SSH Connection| D[🌐 VPS Server 129.121.126.66] + D -->|1. git pull| E[📥 Update Code] + E -->|2. npm run build| F[⚡ Build PWA Frontend] + F -->|3. go build| G[🤖 Build Go Engine] + G -->|4. systemctl restart| H[🚀 Live Site Updated!] +``` + +--- + +## 🛠️ Step-by-Step Setup Guide + +### Step 1: Add SSH Secrets to your GitHub Repository + +1. Open your GitHub Repository in your web browser: + `https://github.com/Amudieshwar-AG/Freshers-Hub` +2. Click **Settings** (top toolbar) ⚙️. +3. In the left sidebar, expand **Secrets and variables** ➔ click **Actions**. +4. Click **New repository secret** (green button on top right) and add these **3 secrets**: + +--- + +#### 🔑 Secret 1: `VPS_HOST` +* **Name:** `VPS_HOST` +* **Secret Value:** `129.121.126.66` + +#### 🔑 Secret 2: `VPS_USERNAME` +* **Name:** `VPS_USERNAME` +* **Secret Value:** `root` + +#### 🔑 Secret 3: `VPS_SSH_KEY` +* **Name:** `VPS_SSH_KEY` +* **Secret Value:** Paste your SSH Private Key contents. + * *Where to find your key on VPS:* Run `cat ~/.ssh/id_rsa` or `cat ~/.ssh/id_ed25519` on your server terminal. + * Copy the entire key including `-----BEGIN OPENSSH PRIVATE KEY-----` and `-----END OPENSSH PRIVATE KEY-----`. + +--- + +### Step 2: Push the Workflow File to GitHub + +The deployment workflow file is already created at: +[.github/workflows/deploy.yml](file:///f:/fresher/Freshers-Hub/.github/workflows/deploy.yml) + +Push it to GitHub by running in your local terminal: + +```bash +git add .github/workflows/deploy.yml CICD_GUIDE.md +git commit -m "ci: add GitHub Actions automated deployment workflow" +git push origin main +``` + +--- + +### Step 3: Test your CI/CD Pipeline! 🎉 + +1. Make any code edit or change on your project. +2. Push your changes: + ```bash + git push origin main + ``` +3. Go to your **GitHub Repository** ➔ Click the **Actions** tab. +4. You will see a live workflow named **"Deploy RIT Freshers Hub to VPS"** running! +5. In ~30 seconds, it will complete with a green checkmark `✓`, and your live server at `https://rit-services.in` will be updated automatically! + +--- + +## 🛑 Troubleshooting CI/CD Pipeline Issues + +* **Error: `ssh: handshake failed` or `permission denied (publickey)`** + * **Fix:** Make sure the public key corresponding to `VPS_SSH_KEY` is added to `/root/.ssh/authorized_keys` on your VPS. + * On your VPS, run: `cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys` +* **Error: `Host key verification failed`** + * **Fix:** `appleboy/ssh-action` handles host key verification automatically, but ensure `VPS_HOST` is set strictly to `129.121.126.66` without extra spaces or `http://`.