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.
Pentru a configura pipeline-ul, vom crea structura de directoare necesară și fișierul de workflow în rădăcina proiectului, astfel:
mkdir -p .github/workflows
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
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).git add .github/workflows/mobile-ci-cd.yml git commit -m "Add Mobile CI/CD workflow for unit tests" git push
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.
Într-un mediu real de lucru acest pipeline este incomplet, astfel propunem îmbunătățirea acestuia prin adăugarea de etape suplimentare: