ci: add GitHub Actions automated deployment workflow and CI/CD guide
Some checks failed
Deploy RIT Freshers Hub to VPS / Deploy to Live VPS (push) Has been cancelled
Some checks failed
Deploy RIT Freshers Hub to VPS / Deploy to Live VPS (push) Has been cancelled
This commit is contained in:
42
.github/workflows/deploy.yml
vendored
Normal file
42
.github/workflows/deploy.yml
vendored
Normal file
@@ -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!"
|
||||||
84
CICD_GUIDE.md
Normal file
84
CICD_GUIDE.md
Normal file
@@ -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://`.
|
||||||
Reference in New Issue
Block a user