Configurar pipeline en Bitbucket para PHP
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