Posted in

Exemple bàsic de CI amb GitHub Actions i Laravel

Exemple bàsic de CI amb GitHub Actions i Laravel

Introducció

Aquest és el primer post de la sèrie dedicada a la CI/CD (Integració i Desplegament Continus). Aquí aprendrem a configurar un workflow bàsic de CI per a un projecte Laravel, utilitzant GitHub Actions, de manera que s’executin proves automàtiques cada cop que fem un push al nostre repositori.

Aquesta pràctica t’ajudarà a detectar errors abans d’integrar canvis al projecte principal.

Prerequisits

  • Un projecte Laravel ja creat i pujat a GitHub.
  • PHPUnit configurat (habitualment ja ho està per defecte).
  • Coneixements bàsics de Git i GitHub.
  • Accés a GitHub Actions (disponible per a repositoris públics i privats).

Pas 1: Crea la carpeta de workflows

Dins del teu projecte (al directori arrel), crea les següents carpetes:

mkdir -p .github/workflows

Pas 2: Afegeix un workflow de CI

Dins de .github/workflows, crea un arxiu amb el nom ci.yml.

Contingut bàsic per fer córrer les proves PHPUnit cada cop que es faci un push a qualsevol branca:

name: Run Laravel Tests

on:
  push:
    branches: [ "*" ]

jobs:
  laravel-tests:
    runs-on: ubuntu-latest

    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: testing
        ports:
          - 3306:3306
        options: >-
          --health-cmd="mysqladmin ping --silent"
          --health-interval=10s
          --health-timeout=5s
          --health-retries=3

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          extensions: mbstring, pdo, mysql
          coverage: none

      - name: Install dependencies
        run: |
          composer install --no-progress --prefer-dist
          cp .env.example .env
          php artisan key:generate

      - name: Wait for MySQL
        run: sleep 15

      - name: Run migrations
        run: php artisan migrate --force

      - name: Run tests
        run: php artisan test

Nota important: .env per a proves

Assegura’t que la teva .env.example tingui els paràmetres de connexió a la base de dades de proves:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testing
DB_USERNAME=root
DB_PASSWORD=root

Resultat esperat

Quan facis un push, GitHub executarà aquest workflow i et mostrarà si les proves passen o fallen. Ho podràs veure a la pestanya Actions del teu repositori a GitHub.

Tags recomanats

CI/CD, GitHub Actions, Laravel, PHPUnit, Integració Contínua, Automatització, DevOps

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *


The reCAPTCHA verification period has expired. Please reload the page.