Los «Pipelines» son un feature de BitBucket que nos permite ejecutar pruebas automatizadas en nuestros proyectos cada vez que realizamos un Pull Request, o un Commit a un Branch en el repositorio del proyecto. Es decir, Bitbucket Pipelines trae integración continua, deploy y más a BitBucket. Veamos como podemos configurar este tipo de pruebas automatizadas en un proyecto de Laravel usando PHPUnit y MySQL.

Si no estas familiarizado con estos términos te invito a visitar el Curso de Git y GitHub.

Configurando el entorno de pruebas de Laravel

Si estás usando Laravel Dusk, puedes seguir este tutorial sobre Introducción a Laravel Dusk.

Ya que estamos usando PHPUnit debemos configurar las variables correspondientes en el archivo phpunit.xml:

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="CACHE_DRIVER" value="array"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="QUEUE_DRIVER" value="sync"/>
    <env name="APP_KEY" value="base64:qqKxFTd/OpAxPUg//HlUcbQxKakDZwGcOW9q6F17sR8="/>
    <env name="DB_CONNECTION" value="mysql"/>
    <env name="DB_DATABASE" value="test"/>
    <env name="DB_USERNAME" value="secret"/>
</php>

Como puedes ver, estamos usando una conexión de «MySQL» y agregamos las credenciales de acceso a una base de datos «test».

Activando los Pipelines en BitBucket

Por supuesto debes crear un nuevo repositorio y hacer push de tu proyecto local a dicho repositorio. Desde Menu > Repositories > Create Repository


Una vez creado el repositorio puedes seguir las instrucciones que se detallan a continuación:

Desde tu proyecto local:

// inicia git en el directorio del proyecto

$ git init

// Agrega el repositorio remoto

$ git remote add origin ssh://[email protected]/jeffochoa/laravel-project.git

// commit de los cambios

$ git commit -am "first commit"

// Envía el proyecto local al repositorio de bitbucket

$ git push -u origin master

Ahora desde la barra lateral del panel del repositorio en BitBucket vas a la opción «Pipelines».

En la siguiente pantalla selecciona la opción «Enable Pipelines».

En esta pantalla vas a poder configurar el archivo bitbucket-pipelines.yml que se incluirá en el directorio principal de tu proyecto y que contiene todos los comandos a ejecutar cada vez que se ejecutan las pruebas:

Básicamente, cada vez que este archivo se ejecuta, utiliza una «imagen» limpia de un sistema operativo, instala el proyecto de Laravel y ejecuta la colección de pruebas. Esta es una configuración que incluye PHPUnit y MySQL:

# This is a sample build configuration for PHP.
# Check our guides at https://confluence.atlassian.com/x/VYk8Lw for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.

image: smartapps/bitbucket-pipelines-php-mysql:stretch

pipelines:
  default:
    - step:
        script: # Modify the commands below to build your repository.
          - service mysql start
          - mysql -h localhost --user=root --password=root -e "CREATE DATABASE test;"
          - mysql -h localhost --user=root --password=root -e "GRANT USAGE ON *.* TO homestead@localhost IDENTIFIED BY 'secret';"
          - mysql -h localhost --user=root --password=root -e "GRANT ALL PRIVILEGES ON test.* TO homestead@localhost;"
          - mysql -h localhost --user=root --password=root -e "FLUSH PRIVILEGES;"
          - composer --version
          - phpunit --version
          - composer install
          - phpunit

Por defecto, esta máquina virtual utiliza el usuario «root» con la clave «password» en la configuración de MySQL, por ello he agregado los comandos para crear un nuevo usuario «homestead» asignando el password «secret» para mantener la configuración que tengo en el entorno local (Homestead).

Cuando hayas terminado con la edición del archivo puedes hacer click en el botón «commit» para incluir estos cambios en el proyecto.

Debes confirmar esta opción:

Esto es todo, una vez finalizado el proceso se ejecutará la primera prueba automatizada.

Si haces click en el enlace, podrás ver el progreso y finalmente el resultado de la ejecución:

Finalmente puedes observar si algún commit ha hecho fallar las pruebas. Esto será indicado con un pequeño icono (rojo para error, verde para success).

Material relacionado

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.