Configurar pipeline en Bitbucket para PHP

Author
Por Darío Rivera
Publicado el en CI/CD

En nuestro post anterior vimos Qué es una pipeline y cómo habilitarla en Bitbucket. El día de hoy veremos cómo configurar el archivo bitbucket-pipelines.yml para correr una pipeline en PHP y poder testear nuestras aplicaciones así como también realizar otras tareas rutinarias.

Imagen

El primer paso para configurar una pipeline es elegir la imagen que nos servirá para la compilación, testing y/o despliegue de nuestra aplicación. Recuerda que las imagenes las puedes encontrar en Docker Hub. En este caso, vamos a utilizar una imagen para PHP 7.4.

image: php:7.4

Pipelines

Una pipeline está constituída por una serie de pasos (steps) a ejecutar en una o varias ramas (branches). Una pipeline que se ejecutará en todas las ramas debe ser configurada como default.

pipelines:
  default:
    - step:
      ...
    - step:
      ...

De lo contrario se puede especificar la rama en donde correrá la pipeline. El siguiente scaffolding configura una serie de pasos para correr en la rama master y en cualquier rama feature.

pipelines:
  branches:
    master:
      - step:
        ...
    feature/*:
      - step:
        ...

Steps

Cada step en la pipeline corre en un contenedor de docker separado. La sección más importante de esta configuración son los scripts los cuáles son en esencia los comandos que ejecutará el contenedor. Una buena práctica es lanzar el comando de actualización de paquetes de la distribución en cuestión e instalar los paquetes necesarios..

pipelines:
  default:
    - step:
        script:
          - apt-get update && apt-get install -y git
          ...

Configuraciones comunes para repositorios PHP

En la mayioría de ocasiones necesitarás la misma configuración entre varios repositorios PHP. A continuación tienes algunas configuraciones comunes depdendiendo del tipo de repositorio.

Librerías PHP

image: php:7.4

pipelines:
  default:
    - step:
        script:
          - apt-get update && apt-get install -y git unzip libzip-dev
          - docker-php-ext-install -j$(nproc) zip
          - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
          - composer install
          - vendor/bin/phpunit --stop-on-error --stop-on-failure

Aplicaciones Laravel

image: php:7.4

pipelines:
  default:
    - step:
        script:
          - apt-get update && apt-get install -y git unzip libzip-dev
          - docker-php-ext-install -j$(nproc) zip
          - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
          - cp .env.pipelines .env.testing
          - composer install
          - vendor/bin/phpunit --stop-on-error --stop-on-failure

Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.