This shows you the differences between two versions of the page.
|
ss:laboratoare:08 [2025/02/20 16:30] 127.0.0.1 external edit |
ss:laboratoare:08 [2026/04/27 18:21] (current) ciprian.popescu0411 |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Laboratorul 08. ===== | + | ====== Laborator 8: Implementarea unui pipeline CI/CD pentru aplicația mobilă ====== |
| + | Procesul de dezvoltare a unei aplicații de orice tip implică o serie de etape, printre care se numără | ||
| + | scrierea codului, compilarea, testarea și lansarea software-ului. În cadrul acestui laborator ne vom | ||
| + | propune să automatizăm aceste etape prin implementarea unui pipeline CI/CD specific aplicației mobile | ||
| + | realizate în cadrul acestei materii. | ||
| + | Astfel, vom folosi GitHub Actions pentru a defini un pipeline simplu care va compila și rula testele | ||
| + | unitare ale aplicației la fiecare push în repository. | ||
| + | |||
| + | ==== Indicații de implementare ==== | ||
| + | |||
| + | Pentru a configura pipeline-ul, vom crea structura de directoare necesară și fișierul de workflow în | ||
| + | rădăcina proiectului, astfel: | ||
| + | |||
| + | === Pasul 1: Creați directorul pentru workflow-uri: === | ||
| + | |||
| + | <code bash> | ||
| + | mkdir -p .github/workflows | ||
| + | </code> | ||
| + | |||
| + | === Pasul 2: Creați următorul fișier de configurare: === | ||
| + | |||
| + | <file yaml mobile-ci-cd.yml> | ||
| + | name: Mobile CI/CD | ||
| + | |||
| + | on: | ||
| + | push: | ||
| + | branches: [ "main" ] | ||
| + | pull_request: | ||
| + | branches: [ "main" ] | ||
| + | |||
| + | jobs: | ||
| + | unit_tests: | ||
| + | name: Run Unit Tests | ||
| + | runs-on: ubuntu-latest | ||
| + | |||
| + | steps: | ||
| + | - name: Checkout code | ||
| + | uses: actions/checkout@v4 | ||
| + | |||
| + | - name: Set up JDK 17 | ||
| + | uses: actions/setup-java@v4 | ||
| + | with: | ||
| + | java-version: '17' | ||
| + | distribution: 'temurin' | ||
| + | cache: gradle | ||
| + | |||
| + | - name: Grant execute permission for gradlew | ||
| + | run: chmod +x gradlew | ||
| + | |||
| + | - name: Run Unit Tests | ||
| + | run: ./gradlew test | ||
| + | </file> | ||
| + | |||
| + | Principalele elemente ale fișierului de workflow sunt: | ||
| + | |||
| + | * **''on: push''**: Aici se definește când pornește automat pipeline-ul. În acest caz, la fiecare ''push'' / ''pull_request'' pe branch-ul ''main''; | ||
| + | * **''runs-on: ubuntu-latest''**: specifică mașina virtuală pe care va rula job-ul (un container Linux standard oferit de GitHub); | ||
| + | * **''actions/checkout''**: Acțiune oficială GitHub care clonează repository-ul în mediul de lucru CI; | ||
| + | * **''setup-java''**: Instalează JDK-ul necesar compilării proiectului Android; | ||
| + | * **''./gradlew test''**: Comanda Gradle care compilează codul și rulează testele unitare (cele care nu necesită dispozitiv Android/emulator). | ||
| + | |||
| + | === Pasul 3: Încărcați workflow-ul creat în repository: === | ||
| + | |||
| + | <code bash> | ||
| + | git add .github/workflows/mobile-ci-cd.yml | ||
| + | git commit -m "Add Mobile CI/CD workflow for unit tests" | ||
| + | git push | ||
| + | </code> | ||
| + | |||
| + | După ce ați terminat de implementat acest workflow, puteți verifica tab-ul ''Actions'' din repository-ul | ||
| + | vostru de GitHub pentru a vedea pipeline-ul rulând. | ||
| + | |||
| + | ==== Cerință ==== | ||
| + | |||
| + | Într-un mediu real de lucru acest pipeline este incomplet, astfel propunem îmbunătățirea acestuia | ||
| + | prin adăugarea de etape suplimentare: | ||
| + | |||
| + | - analiza statică a codului înainte de etapa de testare propriu-zisă; | ||
| + | - rularea testelor instrumentate; | ||
| + | - compilarea aplicației sub formă de APK; | ||
| + | - încărcarea APK-ului în GitHub Releases. | ||