Configurar pipeline en Bitbucket para PHP

Author
By Darío Rivera
Posted on 2021-05-01 in 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

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

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