Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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.
ss/laboratoare/08.1740061822.txt.gz · Last modified: 2025/02/26 00:39 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0