BYTEBOOK
Bytebook Docs • GitHub Actions / CI-CD / Automation
PATH:
DOCS /
GITHUB_ACTIONS_GUIDE.HTML
_
[00:00:00] DOCS_READY
DEMOS
Main Archive
JAVA LABS
Enterprise
PY LABS
Neural Assets
NODE LABS
Async Runtime
INFRA
Control Center
AUTOMATION & DEVOPS GUIDES • GITHUB ACTIONS CI/CD
Ghid CI/CD Automatizat cu GitHub Actions
Acest ghid descrie configurarea unui pipeline de CI/CD cu GitHub Actions. Orice git push pe branch-ul main va declanșa actualizarea și repornirea automată pe VPS-ul 63.250.40.142.
# Cum Funcționează Pipeline-ul?
[ Mac (VS Code) ] --(git push)--> [ GitHub Repo ] --(GitHub Action)--> [ SSH Server VPS ]
│
├── git pull
├── build (npm/maven)
└── systemctl restart
│
├── git pull
├── build (npm/maven)
└── systemctl restart
1. Generare Chei SSH și Configurare Secrete pe GitHub
Pentru ca GitHub Actions să se poată conecta securizat la VPS fără parolă, vom folosi o cheie SSH privată dedicată.
A. Generare pereche de chei SSH pe VPS
- Conectează-te la VPS prin SSH:
ssh root@63.250.40.142 - Generează o cheie SSH nouă pentru GitHub Actions:
ssh-keygen -t ed25519 -C "github-actions-deploy" -f ~/.ssh/github_actions_key -N "" - Adaugă cheia publică în fișierul de chei autorizate:
cat ~/.ssh/github_actions_key.pub >> ~/.ssh/authorized_keys - Afișează și copiază cheia privată (o vei adăuga pe GitHub):
cat ~/.ssh/github_actions_key
B. Adăugare Secrete în Repository-ul GitHub
- Deschide repository-ul proiectului pe GitHub.com.
- Mergi la Settings → Secrets and variables → Actions.
- Apasă pe New repository secret și adaugă următoarele 3 secrete:
| Nume Secret (Name) | Valoare (Value) |
|---|---|
| VPS_HOST | 63.250.40.142 |
| VPS_USERNAME | root |
| VPS_SSH_KEY | Conținutul cheii private github_actions_key |
2. Crearea Workflow-ului GitHub Actions în Proiect
În folderul rădăcină al proiectului tău de pe Mac, creează structura de foldere .github/workflows/.
Exemplu 1: Workflow pentru Proiect Node.js / Express (.github/workflows/deploy.yml)
name: Deploy Node.js App to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Deploy to VPS via SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
cd /root/projects/node-demo
git pull origin main
npm install --production
systemctl restart node-demo
Exemplu 2: Workflow pentru Aplicație Frontend (React / Angular Static)
name: Deploy React/Angular App to VPS
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy and Build on VPS
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
cd /root/projects/react-demo
git pull origin main
npm install
npm run build
Exemplu 3: Workflow pentru Java Spring Boot (Build Maven în GitHub)
name: Deploy Java Spring Boot to VPS
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Build with Maven
run: mvn clean package -DskipTests
- name: Copy JAR to VPS via SCP
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.VPS_SSH_KEY }}
source: "target/*.jar"
target: "/root/projects/micro-java/"
strip_components: 1
- name: Restart Spring Boot Service on VPS
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
systemctl restart micro-java
3. Testarea Pipeline-ului de CI/CD
- Pe Mac, efectuează o modificare în codul aplicației tale.
- Comite și trimite modificările pe GitHub:
git add . git commit -m "Test automatizare CI/CD cu GitHub Actions" git push origin main - Intră pe GitHub în repository → tab-ul Actions.
- Vei vedea workflow-ul rulând în timp real până la bifă verde Success.
- Accesează subdomeniul în browser (ex:
https://node-demo.bytebook.xyz) și vei vedea modificarea aplicată!
4. Notificări în caz de Eroare (Opțional)
Dacă build-ul sau restart-ul eșuează pe VPS, GitHub Actions îți va trimite automat un email de alertă cu linia exactă unde s-a produs eroarea. Poți consulta logurile complete direct din tab-ul Actions.