BYTEBOOK
Bytebook Docs • GitHub Actions / CI-CD / Automation
← Înapoi la Bytebook
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

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

  1. Conectează-te la VPS prin SSH:
    ssh root@63.250.40.142
  2. Generează o cheie SSH nouă pentru GitHub Actions:
    ssh-keygen -t ed25519 -C "github-actions-deploy" -f ~/.ssh/github_actions_key -N ""
  3. Adaugă cheia publică în fișierul de chei autorizate:
    cat ~/.ssh/github_actions_key.pub >> ~/.ssh/authorized_keys
  4. 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

  1. Deschide repository-ul proiectului pe GitHub.com.
  2. Mergi la Settings → Secrets and variables → Actions.
  3. 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

  1. Pe Mac, efectuează o modificare în codul aplicației tale.
  2. Comite și trimite modificările pe GitHub:
    git add .
    git commit -m "Test automatizare CI/CD cu GitHub Actions"
    git push origin main
  3. Intră pe GitHub în repository → tab-ul Actions.
  4. Vei vedea workflow-ul rulând în timp real până la bifă verde Success.
  5. 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.