Pentru acest laborator vom configura și implementa pas cu pas un sistem complet de integrare continuă pentru platforma web, care conține un Backend Go și un Frontend React.
Într-un proiect structurat pe mai multe planuri (server, client, deployment în Docker), CI/CD este esențial:
Înainte de a configura fluxurile propriu-zise, este utilă activarea scanărilor automate de dependențe:
Dependabot configurează verificarea automată a versiunilor pentru dependențele folosite în codul proiectului. Acesta efectuează interogări săptămânale pentru componentele NodeJS, Go, precum și pentru imaginile Docker folosite și generează automat PR-uri de securitate.
Settings);Code security and analysis (sau Advanced security);Dependabot alerts, cât și Dependabot security updates.
Obiectivul principal al acestei secțiuni este definirea unui workflow automatizat care, la fiecare push sau pull request pe branch-ul main, va compila componentele și va rula testele.
Funcționalitățile de automatizare din GitHub folosesc sistemul GitHub Actions. Workflow-urile sunt definite ca fișiere YAML în directorul .github/workflows/.
Asigurați-vă că în rădăcina proiectului există folderul .github/workflows. Dacă nu există, creați-l:
mkdir -p .github/workflows
În acest folder, creați un fișier numit ci.yml:
touch .github/workflows/ci.yml
Introduceți următorul conținut în fișier:
name: CI on: push: branches: [main] pull_request: branches: [main] permissions: contents: read jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 # Go backend - name: Install system dependencies (tesseract + leptonica) run: | sudo apt-get update sudo apt-get install -y libtesseract-dev libleptonica-dev tesseract-ocr - name: Setup Go uses: actions/setup-go@v5 with: go-version: "1.24" - name: Go build working-directory: server run: go build ./... - name: Go test working-directory: server run: go test ./... -v -coverprofile=coverage.out 2>&1 | tee test-results.txt - name: Upload Go test results if: always() uses: actions/upload-artifact@v4 with: name: go-test-results path: server/test-results.txt - name: Upload Go coverage report if: always() uses: actions/upload-artifact@v4 with: name: go-coverage path: server/coverage.out # React/Vite frontend - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "22" cache: "yarn" cache-dependency-path: client/yarn.lock - name: Install client dependencies working-directory: client run: yarn install --frozen-lockfile - name: Client lint working-directory: client run: yarn lint - name: Client build working-directory: client run: yarn build # Docker build - name: Docker build API image working-directory: server run: docker build -t ss-web-api:test .
Acest workflow definește operațiile de ansamblu ale integrării:
Pentru analiza automată de securitate a codului, se utilizează CodeQL, un instrument oferit de GitHub.
Settings → Code security and analysis.Code scanning, selectați Set up și alegeți Advanced.
Security → Code scanning alertsActions → CodeQL workflowgit add .github/workflows/ci.yml git commit -m "Add CI pipeline" git push
Puteți adăuga un badge în `README.md`:

<nume_user> cu username-ul vostru GitHub.