Cómo Usar Bitbucket Pipelines para CI/CD en el Desarrollo Web de WordPress y Drupal
En el mundo del desarrollo de sitios web, es importante trabajar rápido y sin errores. La Integración Continua y el Despliegue Continuo (CI/CD) ayudan a que esto suceda automatizando partes de nuestro trabajo. En esta publicación, demostraré cómo aprovechar Bitbucket Pipelines para automatizar diversas tareas, como probar e implementar proyectos creados con Drupal y WordPress, dos Sistemas de Gestión de Contenidos ampliamente utilizados.
Introducción a Bitbucket y Git
Antes de explorar los matices de Bitbucket Pipelines, es esencial comprender Bitbucket en sí. Bitbucket, parte de la suite de Atlassian, es un servicio de alojamiento de repositorios de control de versiones basado en la web. Se utiliza ampliamente para la gestión de repositorios de Git, ofreciendo repositorios privados y públicos. Esta característica, especialmente la disponibilidad de repositorios privados en su nivel gratuito, convierte a Bitbucket en una opción popular para equipos y desarrolladores individuales. No se trata solo de alojamiento de código; Bitbucket se integra con otros productos de Atlassian como Jira y Bamboo, creando un ecosistema fluido para el desarrollo de software, desde la planificación hasta el despliegue. Git, la columna vertebral de Bitbucket, es un sistema de control de versiones distribuido que permite a varios desarrolladores colaborar en la misma base de código de manera eficiente.
¿Qué es Bitbucket Pipelines?
Imagina una herramienta que entra en acción en el momento en que envías cambios a tu repositorio remoto. Eso es Bitbucket Pipelines para ti. Integrado dentro de tu repositorio de Bitbucket, automatiza una variedad de tareas cada vez que actualizas tu código. Estas tareas se definen en un archivo de configuración llamado bitbucket-pipelines.yml
. El rango de pasos automatizados que puede realizar incluye, entre otros:
- Prueba de Código: Ejecución de pruebas unitarias, pruebas de integración y otras pruebas automatizadas para garantizar la calidad del código.
- Pruebas de Extremo a Extremo: Ejecución de pruebas E2E para simular escenarios de usuarios reales y validar la funcionalidad completa y la experiencia de usuario de la aplicación.
- Despliegue de Código: Despliegue automático de código en diferentes entornos como staging o producción.
- Creación de Artefactos: Compilación de código o construcción de aplicaciones en paquetes o ejecutables desplegables.
- Ejecución de Scripts: Ejecución de scripts personalizados para diversos fines, como migraciones de bases de datos o tareas de limpieza.
- Linting y Análisis de Código: Verificación del código en busca de errores de sintaxis, problemas de formato y posibles errores.
- Notificaciones: Envío de notificaciones o alertas basadas en el resultado de los pasos del pipeline.
- Operaciones con Docker: Construcción, ejecución y envío de imágenes Docker a registros.
- Análisis de Seguridad: Realización de análisis de seguridad para identificar vulnerabilidades en la base de código.
- Generación de Documentación: Generación y actualización automática de documentación basada en cambios de código.
- Pruebas de Rendimiento: Realización de pruebas de carga y rendimiento para evaluar el comportamiento de la aplicación bajo estrés.
Con estas capacidades, Bitbucket Pipelines mejora la eficiencia, consistencia y fiabilidad de tu proceso de desarrollo de software.
Configuración de un Repositorio con Bitbucket Pipelines
1. Crea o Selecciona tu Repositorio
- Paso 1: Inicia sesión en tu cuenta de Bitbucket.
- Paso 2: Crea un nuevo repositorio o selecciona uno existente donde quieras configurar Bitbucket Pipelines.
2. Inicializa Bitbucket Pipelines
- Paso 3: En tu repositorio, navega a la sección ‘Pipelines’ en la barra lateral izquierda.

- Paso 4: Haz clic en ‘Create your first pipeline’. Bitbucket mostrará una variedad de plantillas.

- Paso 5: Elige una plantilla que se ajuste mejor a la pila tecnológica de tu proyecto. Por ejemplo, selecciona ‘Build PHP Application’ para un proyecto basado en PHP.

- Paso 6: Bitbucket mostrará el archivo
bitbucket-pipelines.yml
generado basado en la plantilla seleccionada. Revisa la configuración del pipeline para asegurarte de que se alinea con los requisitos de tu proyecto. Este archivo incluye pasos predefinidos para probar y hacer linting de tu código PHP. - Paso 7: Puedes editar el archivo directamente en la interfaz de Bitbucket para personalizar los pasos del pipeline según las necesidades de tu proyecto. Asegúrate de definir cualquier paso adicional de construcción, prueba o despliegue que tu proyecto requiera.
- Paso 8: Una vez que hayas revisado y editado opcionalmente la configuración, haz clic en ‘Commit file’ para guardar el archivo
bitbucket-pipelines.yml
en tu repositorio.

3. Añade una Clave SSH para Acceso al Servidor (Opcional)
- Paso 9: Navega a ‘Repository settings’, luego a ‘SSH keys’ bajo ‘Pipelines’ si tu proceso de despliegue requiere acceso SSH a tu servidor.
- Paso 10: Aquí, puedes generar un nuevo par de claves SSH o añadir una existente haciendo clic en ‘Use my own keys’.
- Paso 11: Si estás añadiendo una clave existente, proporciona la clave privada en el espacio indicado y asígnale una etiqueta (por ejemplo, ‘Deployment Server’).
- Paso 12: Para que la clave SSH funcione, también necesitas añadir la información del host del servidor en ‘Known hosts’. Introduce la dirección del host y obtén la huella digital del host para asegurar conexiones seguras.
- Paso 13: Guarda los detalles de la clave SSH y los hosts conocidos.

4. Define Variables del Repositorio
- Paso 14: Ve a ‘Repository settings’ y haz clic en ‘Repository variables’ bajo ‘Pipelines’.
- Paso 15: Haz clic en el botón ‘Add’ para crear una nueva variable.
- Paso 16: Introduce el ‘Name’ para la variable, como
DEV_SERVER
, y el ‘Value’ que le corresponde. - Paso 17: Si la variable es sensible, asegúrate de que la casilla ‘Secured’ esté marcada para ocultar el valor en los logs.
- Paso 18: Haz clic en ‘Add’ para guardar la variable.

5. Define Entornos de Despliegue
- Paso 19: En ‘Repository settings’, navega a ‘Deployments’ bajo ‘Pipelines’.
- Paso 20: Define tus entornos de despliegue. Bitbucket soporta hasta cien entornos de despliegue bajo las categorías:
Test
,Staging
yProduction
. - Paso 21: Para cada entorno, puedes especificar diferentes configuraciones. Introduce los detalles específicos del entorno como URLs, rutas de servidor o cualquier otro dato relevante como variables del repositorio, prefijándolos con el nombre del entorno como
TEST_
,STAGE_
yPROD_
para mayor claridad. - Paso 22: Asegúrate de que cualquier información sensible para cada entorno esté protegida. Bitbucket enmascarará las variables protegidas en los logs y la interfaz de usuario.

6. Finaliza la Configuración
- Paso 23: Confirma cualquier cambio en el archivo
bitbucket-pipelines.yml
. - Paso 24: Envía los cambios a tu repositorio para activar el pipeline.
- Paso 25: Utiliza
ignorelist.txt
en tu proceso de despliegue. Como parte del paso de despliegue, especialmente al sincronizar archivos con rsync, es importante gestionar qué archivos se transfieren al entorno de producción. Para esto, usamos un archivo especial llamadoignorelist.txt
. Este archivo contiene una lista de todos los archivos y directorios que deben excluirse durante el proceso de rsync para evitar la sobrescritura o la transferencia innecesaria de archivos.

Para ejemplos prácticos de configuraciones de bitbucket-pipelines.yml
, visita este repositorio: Ejemplos de Bitbucket Pipelines. Notablemente, este ejemplo enfocado en Drupal ilustra la ejecución de composer install
en la nube para proyectos Drupal. Estos ejemplos sirven como un punto de partida útil para personalizar tus propios pipelines.
7. Monitoriza tu Pipeline
Paso 26: Revisa la sección ‘Pipelines’ después de cada push para monitorizar la ejecución y ver los logs.

Reflexiones Finales
En resumen, Bitbucket Pipelines aporta mucha facilidad y eficiencia al desarrollo web. Simplifica el trabajo en equipo, las pruebas y el despliegue, haciendo nuestro trabajo más fluido.
Recuerda, el mundo de CI/CD está en constante evolución. Lo que he cubierto es solo el comienzo. A medida que uses Bitbucket Pipelines más, aprenderás nuevas formas de hacerlo funcionar mejor para tus necesidades. Sigue explorando y mejorando tu proceso de desarrollo. ¡Feliz depuración!