{"id":15225,"date":"2026-04-13T09:00:00","date_gmt":"2026-04-13T07:00:00","guid":{"rendered":"https:\/\/wata.es\/?p=15225"},"modified":"2026-02-17T11:50:55","modified_gmt":"2026-02-17T10:50:55","slug":"ci-cd-con-bitbucket-pipelines-una-introduccion","status":"publish","type":"post","link":"https:\/\/wata.es\/es\/ci-cd-con-bitbucket-pipelines-una-introduccion\/","title":{"rendered":"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n"},"content":{"rendered":"\n<p>La Integraci\u00f3n Continua (CI) y el Despliegue Continuo (CD) se han convertido en algo casi omnipresente en el desarrollo de software. En WATA Factory, hemos configurado casi todos los proyectos para usar al menos alg\u00fan tipo de mecanismo automatizado de integraci\u00f3n y despliegue. A medida que estas pr\u00e1cticas evolucionan, entender c\u00f3mo estructurar y automatizar tus flujos de trabajo de manera efectiva se vuelve cada vez m\u00e1s importante.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>En este art\u00edculo, veremos todo lo que necesitas saber antes de configurar CI\/CD con <a href=\"https:\/\/www.atlassian.com\/es\/software\/bitbucket\/features\/pipelines\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Bitbucket Pipelines<\/a>: aclararemos la terminolog\u00eda b\u00e1sica, explicaremos c\u00f3mo est\u00e1 estructurado Pipelines y mostraremos ejemplos de configuraci\u00f3n tanto simples como m\u00e1s avanzados que podr\u00e1s aplicar a tus propios proyectos. En resumen, este art\u00edculo te dar\u00e1 una visi\u00f3n pr\u00e1ctica y fundamentada de c\u00f3mo funciona Bitbucket Pipelines y lo que puedes conseguir con \u00e9l.<\/p>\n\n\n\n<p>Pero antes, aclaremos parte de la terminolog\u00eda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es CI?<\/h2>\n\n\n\n<p>CI (<strong>Continuous Integration<\/strong>) se refiere a la pr\u00e1ctica de compilar autom\u00e1ticamente, ejecutar pruebas y an\u00e1lisis est\u00e1tico de c\u00f3digo, as\u00ed como (posiblemente) fusionar el c\u00f3digo.<br>La palabra clave aqu\u00ed es \u201c<strong>autom\u00e1ticamente\u201d<\/strong>. Ejecutar todos los pasos para compilar y probar suele llevar cierto tiempo, y tener que ejecutar estos pasos repetitivos (o al menos una parte de ellos) manualmente no solo es ineficiente, sino que tambi\u00e9n introduce otra posible fuente de errores humanos (porque los humanos no somos muy buenos haciendo tareas tediosas y repetitivas).<\/p>\n\n\n\n<p>En su lugar, configuras un proceso (normalmente llamado \u201cpipeline\u201d) que se ejecuta autom\u00e1ticamente cada vez que haces push de tu c\u00f3digo al repositorio. El desarrollador recibe una notificaci\u00f3n si alguno de los pasos falla y puede entonces solucionar el problema lo antes posible.<\/p>\n\n\n\n<p>Tambi\u00e9n puedes configurar diferentes pipelines para diferentes ramas. Por ejemplo, para tu rama feature puede que no quieras ejecutar siempre todas las pruebas de integraci\u00f3n o de front-end end-to-end que consumen mucho tiempo con cada push, porque en un proyecto grande estas pruebas pueden tardar horas en ejecutarse. Para evitar eso, podr\u00edas configurar el sistema de forma que los pasos de pruebas m\u00e1s costosos solo se ejecuten cuando algo se fusiona en la rama master\/release (dependiendo de c\u00f3mo est\u00e9 definido el modelo de ramas del proyecto).<\/p>\n\n\n\n<p>En general, la salida de la fase de CI suele ser alg\u00fan tipo de artefacto que se puede desplegar en un entorno (como un archivo .jar o .war o una imagen Docker).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es CD?<\/h2>\n\n\n\n<p>CD significa <strong>Continuous Delivery o Continuous Deployment<\/strong>, y puede considerarse una extensi\u00f3n de CI. En t\u00e9rminos generales, es lo que ocurre con el c\u00f3digo <strong>despu\u00e9s<\/strong> de que la fase de CI (compilaci\u00f3n y pruebas) se haya completado correctamente, aunque no siempre es posible trazar una l\u00ednea clara entre ambas (especialmente porque ambos procesos suelen definirse en el mismo sitio).<\/p>\n\n\n\n<p>Tu pipeline de CD normalmente toma el artefacto que se ha creado en el paso de CI y lo despliega en un entorno de pruebas o de staging para que los testers puedan acceder a \u00e9l. Esto incluye copiar archivos, establecer configuraciones o reiniciar el servidor. Tambi\u00e9n puede incluir scripts para aumentar autom\u00e1ticamente n\u00fameros de versi\u00f3n o desplegar artefactos en repositorios compartidos. Incluso puedes ir m\u00e1s all\u00e1 y desplegar autom\u00e1ticamente tu aplicaci\u00f3n en producci\u00f3n, si lo deseas.<\/p>\n\n\n\n<p>C\u00f3mo configurar tus pipelines de CI\/CD depende siempre de las necesidades del proyecto, y no hay dos proyectos iguales.<\/p>\n\n\n\n<p>En resumen, aunque al principio suponga algo m\u00e1s de trabajo configurar una pipeline de CI\/CD, compensar\u00e1 con el tiempo, porque automatiza tareas repetitivas y adem\u00e1s detecta errores m\u00e1s pronto, ya que es posible ejecutar pruebas importantes en cada push.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algunas plataformas alternativas de CI\/CD<\/h2>\n\n\n\n<p>En WATA Factory usamos <a href=\"https:\/\/wata.es\/es\/?p=10923\">Bitbucket Pipelines<\/a> principalmente porque se integra sin problemas con otros productos de Atlassian como Jira y Confluence, que usamos a diario.<\/p>\n\n\n\n<p>Sin embargo, existen bastantes frameworks de CI\/CD adem\u00e1s de Bitbucket Pipelines. Veamos algunas de las alternativas m\u00e1s populares:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub Actions<ul><li>Nativo para repositorios GitHub<\/li><\/ul><ul><li>Gran comunidad y f\u00e1cil de usar<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Bueno para proyectos <em>open source<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>GitLab CI\/CD<ul><li>Totalmente integrado con GitLab<\/li><\/ul><ul><li>Registro de contenedores y an\u00e1lisis de seguridad integrados<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Muy utilizado en empresas y equipos centrados en DevOps<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Jenkins<ul><li>Completamente <em>open source<\/em><\/li><\/ul><ul><li>Probablemente uno de los participantes m\u00e1s antiguos de esta lista<\/li><\/ul><ul><li><em>Self-hosted<\/em><\/li><\/ul><ul><li>Altamente personalizable, pero m\u00e1s complejo<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>A menudo utilizado para entornos empresariales complejos y autoalojados<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>CircleCI<ul><li>Utiliza contenedores Docker o m\u00e1quinas virtuales<\/li><\/ul><ul><li>Paralelizaci\u00f3n y <em>caching<\/em> muy r\u00e1pidos<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Buen soporte para Docker y Kubernetes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Azure DevOps Pipelines<ul><li>Integraci\u00f3n profunda con el ecosistema Microsoft y Azure (ideal para <em>stacks<\/em> Microsoft)<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Soporta pipelines en YAML, pero tambi\u00e9n ofrece una interfaz gr\u00e1fica (GUI)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Configurar una Bitbucket Pipeline sencilla<\/h2>\n\n\n\n<p>Para usar Bitbucket Pipelines, obviamente necesitas una cuenta de Bitbucket y tener tu c\u00f3digo subido all\u00ed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enable Pipelines<\/h3>\n\n\n\n<p>Para poder usar pipelines en un repositorio, primero tienes que activarlas desde la interfaz web de Bitbucket. Ve a tu repositorio de Bitbucket, haz clic en Repository settings, busca la secci\u00f3n Pipelines en el men\u00fa de la izquierda, haz clic en Settings y activa Enable pipelines.<br>Hasta que no hagas esto, ninguno de los pasos siguientes tendr\u00e1 efecto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El bitbucket-pipelines.yml<\/h2>\n\n\n\n<p>Toda la configuraci\u00f3n de una Bitbucket Pipeline reside en un \u00fanico archivo YAML, bitbucket-pipelines.yml, que debe ubicarse en la ra\u00edz de tu repositorio. Eso significa, por supuesto, que si tienes tu proyecto dividido en varios repositorios (Frontend y Backend, por ejemplo), tendr\u00e1s una pipeline y un bitbucket-pipelines.yml por separado para cada uno de tus repositorios.<\/p>\n\n\n\n<p>Todos los archivos bitbucket-pipelines.yml tienen una estructura concreta que define los pasos, entornos y condiciones del proceso de CI\/CD. Los elementos clave son los siguientes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>image \u2013 la imagen Docker dentro de la cual se ejecutan los pasos (puede ser una imagen est\u00e1ndar para el entorno de ejecuci\u00f3n o una imagen personalizada que emule el entorno de desarrollo o de producci\u00f3n).<\/li>\n\n\n\n<li>pipelines \u2013 el bloque principal y elemento de nivel superior que define cu\u00e1ndo y c\u00f3mo se ejecutan los pasos. Algunas de las propiedades \u00fatiles son:<ul><li>branches \u2013 se ejecuta en cada <em>commit<\/em> para ramas que tienen un nombre concreto o siguen un patr\u00f3n de nombres (por ejemplo, \u201cmaster\u201d o \u201c<em>\/feature<\/em>\u201d).<\/li><\/ul><ul><li>pull<strong>&#8211;<\/strong>requests \u2013 se ejecuta cuando se crea un <em>pull request<\/em> para una rama determinada. Tambi\u00e9n permite restringirlo a ciertos patrones de nombres, similar a <em>branches<\/em>.<\/li><\/ul><ul><li>tags \u2013 se ejecuta para ciertas etiquetas (<em>tags<\/em>) en el repositorio Git.<\/li><\/ul><ul><li>default \u2013 como su nombre sugiere, es una opci\u00f3n de reserva. Se ejecuta para cualquier <em>commit<\/em> en cualquier rama que no est\u00e9 cubierta por ninguna de las propiedades anteriores.<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>custom \u2013 se usa para pipelines manuales o programadas.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>step \u2013 una unidad de ejecuci\u00f3n (por ejemplo \u201cbuild and test\u201d), definida mediante comandos de shell. Aqu\u00ed es donde est\u00e1 \u201cla chicha\u201d. Un paso puede contener lo siguiente (entre otros):<\/li>\n\n\n\n<li>caches \u2013 directorios (por ejemplo \u201cnode_modules\u201d) que se almacenan en cach\u00e9 entre ejecuciones, lo que puede acelerar significativamente los <em>runs<\/em>, porque no es necesario descargar todas las dependencias cada vez.<\/li>\n\n\n\n<li>artifacts \u2013 archivos generados en un paso (por ejemplo, un archivo .jar) que luego pueden utilizarse en otro paso.<\/li>\n\n\n\n<li>deployment \u2013 marca un paso como despliegue (aparecer\u00e1 en la interfaz \u201cDeployments\u201d de Bitbucket).<\/li>\n\n\n\n<li>pipe \u2013 una imagen Docker personalizada para un contenedor que contiene un script para realizar una tarea. Pueden verse como piezas \u201cprefabricadas\u201d para tu pipeline que son especialmente \u00fatiles para integrarse con herramientas de terceros.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Un Ejemplo Sencillo<\/h3>\n\n\n\n<p>La interfaz web de Bitbucket en realidad proporciona algunas plantillas para configuraciones t\u00edpicas, pero para este art\u00edculo crearemos el archivo bitbucket-pipelines.yml a mano. Como yo soy de Java, el siguiente ejemplo ser\u00e1 para un proyecto Java con Maven. Este es uno de los ejemplos m\u00e1s simples posibles:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: maven:3.9.6-eclipse-temurin-17\npipelines:\n&nbsp; default:\n&nbsp;&nbsp;&nbsp; - step:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name: Build and Test\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; caches:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - maven\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - mvn -B clean install<\/code><\/pre>\n\n\n\n<p>Veamos qu\u00e9 hace esto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La primera l\u00ednea indica a la pipeline que use JDK 17 con Maven 3.9.<\/li>\n\n\n\n<li>La palabra clave default nos dice que esta pipeline se va a ejecutar en cada commit, para cada rama.<\/li>\n\n\n\n<li>Cacheamos la carpeta maven, de modo que las compilaciones futuras ser\u00e1n mucho m\u00e1s r\u00e1pidas.<\/li>\n\n\n\n<li>Por \u00faltimo, ejecutamos el comando de Maven que limpia, descarga dependencias (si es necesario), compila y ejecuta las pruebas unitarias.<\/li>\n<\/ul>\n\n\n\n<p>As\u00ed que, incluso con este poco c\u00f3digo, ya tenemos una pipeline que compila el c\u00f3digo y ejecuta los tests autom\u00e1ticamente en cada commit. Tambi\u00e9n te enviar\u00e1 un correo electr\u00f3nico cuando alguno de los pasos falle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un Ejemplo M\u00e1s Complejo<\/h2>\n\n\n\n<p>El siguiente ejemplo muestra una pipeline m\u00e1s compleja, con pasos separados e independientes para compilar, ejecutar pruebas unitarias, ejecutar pruebas de integraci\u00f3n, empaquetar y desplegar el c\u00f3digo. Mientras que la compilaci\u00f3n y las pruebas unitarias se ejecutar\u00e1n en cada <em>commit<\/em>, las pruebas de integraci\u00f3n, el empaquetado y el despliegue solo se realizar\u00e1n para las ramas <em>release<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: maven:3.9.6-eclipse-temurin-17\n\npipelines:\n  default:\n    - step:\n        name: Build (Compile Only)\n        caches:\n          - maven\n        script:\n          - mvn -B -DskipTests compile\n        artifacts:\n          - target\/**\n    - step:\n        name: Unit Tests\n        caches:\n          - maven\n        script:\n          - mvn -B test\n        artifacts:\n          - target\/**\n  \n  branches:\n    'release\/*':\n      - step:\n          name: Build (Compile Only)\n          caches:\n            - maven\n          script:\n            - mvn -B -DskipTests compile\n          artifacts:\n            - target\/**\n      - step:\n          name: Unit Tests\n          caches:\n            - maven\n          script:\n            - mvn -B test\n          artifacts:\n            - target\/**\n      - step:\n          name: Integration Tests\n          caches:\n            - maven\n          script:\n            - mvn -B verify -DskipUnitTests\n          artifacts:\n            - target\/**\n      - step:\n          name: Package as JAR\n          caches:\n            - maven\n          script:\n            - mvn -B package -DskipTests\n          artifacts:\n            - target\/*.jar\n      - step:\n          name: Deploy\n          deployment: Development\n          script:\n            - pipe: atlassian\/scp-deploy:1.6.0\n              variables:\n                USER: $DEPLOY_USER\n                SERVER: $DEPLOY_HOST\n                REMOTE_PATH: \"\/var\/deploy\"\n                LOCAL_PATH: \"target\/*.jar\"<\/code><\/pre>\n\n\n\n<p>Lo primero que notar\u00e1s es que debajo de pipelines tenemos dos bloques: un bloque default (que se ejecuta en cada commit) y un bloque branches, que solo se ejecuta para las ramas release (que hemos definido como todas las que est\u00e1n en el release\/ directorio).<\/p>\n\n\n\n<p>Tambi\u00e9n debes fijarte en que los pasos Build (Compile Only) y Unit Tests se repiten (porque queremos ejecutarlos tambi\u00e9n para las ramas release).<\/p>\n\n\n\n<p>Adem\u00e1s de los pasos de compilaci\u00f3n y pruebas unitarias, la secci\u00f3n branches tambi\u00e9n ejecuta las pruebas de integraci\u00f3n y empaqueta la aplicaci\u00f3n en un archivo JAR. Estos pasos solo se ejecutar\u00e1n para las ramas release.<\/p>\n\n\n\n<p>Lo m\u00e1s interesante es el \u00faltimo paso, que utiliza la pipe scp-deploy. Esta pipe (como su nombre sugiere) toma los artefactos que recibe del paso anterior y los copia a un servidor remoto usando scp. Para que esto funcione, necesita la informaci\u00f3n proporcionada en la secci\u00f3n variables. Los valores que van precedidos de un \u2018$\u2019 son variables definidas como repository variables en la interfaz web de Bitbucket (porque no quieres subir datos sensibles a tu repositorio).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>CI\/CD es una herramienta indispensable en el desarrollo actual. En WATA Factory utilizamos Bitbucket Pipelines para este prop\u00f3sito. Como hemos visto en este art\u00edculo, es f\u00e1cil configurar una pipeline de CI\/CD (aunque en algunos proyectos puedan llegar a ser muy complejas).<br>Adem\u00e1s de todas las ventajas mencionadas de usar CI\/CD, Bitbucket Pipelines tambi\u00e9n se integra muy bien con otros productos de Atlassian, y por eso es nuestra herramienta de referencia.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La Integraci\u00f3n Continua (CI) y el Despliegue Continuo (CD) se han convertido en algo casi omnipresente en el desarrollo de software. En WATA Factory, hemos configurado casi todos los proyectos para usar al menos alg\u00fan tipo de mecanismo automatizado de integraci\u00f3n y despliegue. A medida que estas pr\u00e1cticas evolucionan, entender c\u00f3mo estructurar y automatizar tus [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":15234,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[89,180,183],"tags":[],"class_list":["post-15225","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-technology","category-tecnologia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n - WATA Factory<\/title>\n<meta name=\"description\" content=\"Gu\u00eda pr\u00e1ctica de CI\/CD con Bitbucket Pipelines: conceptos clave, estructura del YAML y ejemplos para automatizar tu flujo de desarrollo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wata.es\/?p=14965\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n - WATA Factory\" \/>\n<meta property=\"og:description\" content=\"Gu\u00eda pr\u00e1ctica de CI\/CD con Bitbucket Pipelines: conceptos clave, estructura del YAML y ejemplos para automatizar tu flujo de desarrollo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wata.es\/?p=14965\" \/>\n<meta property=\"og:site_name\" content=\"WATA Factory\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/watafactory\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-13T07:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-ES-cover-scaled.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Oliver K\u00f6hler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@watafactory\" \/>\n<meta name=\"twitter:site\" content=\"@watafactory\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oliver K\u00f6hler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965\"},\"author\":{\"name\":\"Oliver K\u00f6hler\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/person\\\/cdf6ce448b7b97a74b3a4646c462a30f\"},\"headline\":\"CI\\\/CD con Bitbucket Pipelines. Una introducci\u00f3n\",\"datePublished\":\"2026-04-13T07:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965\"},\"wordCount\":1791,\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-ES-cover-scaled.webp\",\"articleSection\":[\"Noticias\",\"Technology\",\"Tecnolog\u00eda\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965\",\"url\":\"https:\\\/\\\/wata.es\\\/?p=14965\",\"name\":\"CI\\\/CD con Bitbucket Pipelines. Una introducci\u00f3n - WATA Factory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-ES-cover-scaled.webp\",\"datePublished\":\"2026-04-13T07:00:00+00:00\",\"description\":\"Gu\u00eda pr\u00e1ctica de CI\\\/CD con Bitbucket Pipelines: conceptos clave, estructura del YAML y ejemplos para automatizar tu flujo de desarrollo.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wata.es\\\/?p=14965\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#primaryimage\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-ES-cover-scaled.webp\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-ES-cover-scaled.webp\",\"width\":2560,\"height\":1440,\"caption\":\"Ilustraci\u00f3n vectorial de un ciclo DevOps en forma de infinito, con dos personas trabajando en procesos de CI\\\/CD y elementos tecnol\u00f3gicos alrededor.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wata.es\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CI\\\/CD con Bitbucket Pipelines. Una introducci\u00f3n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wata.es\\\/#website\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"name\":\"WATA Factory\",\"description\":\"IT Consulting &amp; Outsourcing for your company\",\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wata.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\",\"name\":\"WATA Factory\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"width\":688,\"height\":176,\"caption\":\"WATA Factory\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/watafactory\\\/\",\"https:\\\/\\\/x.com\\\/watafactory\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/wata\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/person\\\/cdf6ce448b7b97a74b3a4646c462a30f\",\"name\":\"Oliver K\u00f6hler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g\",\"caption\":\"Oliver K\u00f6hler\"},\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/author\\\/o-koehler\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n - WATA Factory","description":"Gu\u00eda pr\u00e1ctica de CI\/CD con Bitbucket Pipelines: conceptos clave, estructura del YAML y ejemplos para automatizar tu flujo de desarrollo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wata.es\/?p=14965","og_locale":"es_ES","og_type":"article","og_title":"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n - WATA Factory","og_description":"Gu\u00eda pr\u00e1ctica de CI\/CD con Bitbucket Pipelines: conceptos clave, estructura del YAML y ejemplos para automatizar tu flujo de desarrollo.","og_url":"https:\/\/wata.es\/?p=14965","og_site_name":"WATA Factory","article_publisher":"https:\/\/www.facebook.com\/watafactory\/","article_published_time":"2026-04-13T07:00:00+00:00","og_image":[{"width":2560,"height":1440,"url":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-ES-cover-scaled.webp","type":"image\/webp"}],"author":"Oliver K\u00f6hler","twitter_card":"summary_large_image","twitter_creator":"@watafactory","twitter_site":"@watafactory","twitter_misc":{"Escrito por":"Oliver K\u00f6hler","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wata.es\/?p=14965#article","isPartOf":{"@id":"https:\/\/wata.es\/?p=14965"},"author":{"name":"Oliver K\u00f6hler","@id":"https:\/\/wata.es\/#\/schema\/person\/cdf6ce448b7b97a74b3a4646c462a30f"},"headline":"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n","datePublished":"2026-04-13T07:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/wata.es\/?p=14965"},"wordCount":1791,"publisher":{"@id":"https:\/\/wata.es\/#organization"},"image":{"@id":"https:\/\/wata.es\/?p=14965#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-ES-cover-scaled.webp","articleSection":["Noticias","Technology","Tecnolog\u00eda"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/wata.es\/?p=14965","url":"https:\/\/wata.es\/?p=14965","name":"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n - WATA Factory","isPartOf":{"@id":"https:\/\/wata.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wata.es\/?p=14965#primaryimage"},"image":{"@id":"https:\/\/wata.es\/?p=14965#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-ES-cover-scaled.webp","datePublished":"2026-04-13T07:00:00+00:00","description":"Gu\u00eda pr\u00e1ctica de CI\/CD con Bitbucket Pipelines: conceptos clave, estructura del YAML y ejemplos para automatizar tu flujo de desarrollo.","breadcrumb":{"@id":"https:\/\/wata.es\/?p=14965#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wata.es\/?p=14965"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/?p=14965#primaryimage","url":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-ES-cover-scaled.webp","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-ES-cover-scaled.webp","width":2560,"height":1440,"caption":"Ilustraci\u00f3n vectorial de un ciclo DevOps en forma de infinito, con dos personas trabajando en procesos de CI\/CD y elementos tecnol\u00f3gicos alrededor."},{"@type":"BreadcrumbList","@id":"https:\/\/wata.es\/?p=14965#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wata.es\/es\/"},{"@type":"ListItem","position":2,"name":"CI\/CD con Bitbucket Pipelines. Una introducci\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/wata.es\/#website","url":"https:\/\/wata.es\/","name":"WATA Factory","description":"IT Consulting &amp; Outsourcing for your company","publisher":{"@id":"https:\/\/wata.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wata.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/wata.es\/#organization","name":"WATA Factory","url":"https:\/\/wata.es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/#\/schema\/logo\/image\/","url":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","width":688,"height":176,"caption":"WATA Factory"},"image":{"@id":"https:\/\/wata.es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/watafactory\/","https:\/\/x.com\/watafactory","https:\/\/www.linkedin.com\/company\/wata\/"]},{"@type":"Person","@id":"https:\/\/wata.es\/#\/schema\/person\/cdf6ce448b7b97a74b3a4646c462a30f","name":"Oliver K\u00f6hler","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g","caption":"Oliver K\u00f6hler"},"url":"https:\/\/wata.es\/es\/author\/o-koehler\/"}]}},"_links":{"self":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/15225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/comments?post=15225"}],"version-history":[{"count":5,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/15225\/revisions"}],"predecessor-version":[{"id":16063,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/15225\/revisions\/16063"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/media\/15234"}],"wp:attachment":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/media?parent=15225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/categories?post=15225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/tags?post=15225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}