Table of Contents

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:

mkdir -p .github/workflows

Pasul 2: Creați următorul fișier de configurare:

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

Principalele elemente ale fișierului de workflow sunt:

Pasul 3: Încărcați workflow-ul creat în repository:

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.

Cerință

Într-un mediu real de lucru acest pipeline este incomplet, astfel propunem îmbunătățirea acestuia prin adăugarea de etape suplimentare:

  1. analiza statică a codului înainte de etapa de testare propriu-zisă;
  2. rularea testelor instrumentate;
  3. compilarea aplicației sub formă de APK;
  4. încărcarea APK-ului în GitHub Releases.