{"id":15205,"date":"2026-04-13T09:00:00","date_gmt":"2026-04-13T07:00:00","guid":{"rendered":"https:\/\/wata.es\/?p=15205"},"modified":"2026-02-17T11:52:30","modified_gmt":"2026-02-17T10:52:30","slug":"ci-cd-mit-bitbucket-pipelines-eine-einfuehrung","status":"publish","type":"post","link":"https:\/\/wata.es\/de\/ci-cd-mit-bitbucket-pipelines-eine-einfuehrung\/","title":{"rendered":"CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung"},"content":{"rendered":"\n<p>Continuous Integration und Continuous Deployment sind in der Softwareentwicklung heute nahezu allgegenw\u00e4rtig. Auch bei WATA Factory setzen wir in fast allen Projekten zumindest irgendeine Form automatisierter Integration und Deployment ein.<br>Da sich diese Praktiken st\u00e4ndig weiterentwickeln, wird es immer wichtiger zu verstehen, wie man Workflows effektiv strukturiert und automatisiert.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>In diesem Beitrag gehen wir durch alles, was man wissen sollte, bevor man CI\/CD mit <a href=\"https:\/\/www.atlassian.com\/software\/bitbucket\/features\/pipelines\" target=\"_blank\" rel=\"noreferrer noopener\">Bitbucket Pipelines<\/a> einrichtet:<br>Wir kl\u00e4ren die grundlegenden Begriffe, erkl\u00e4ren den Aufbau von Pipelines und zeigen sowohl einfache als auch fortgeschrittenere Konfigurationsbeispiele, die du in deinen Projekten anwenden kannst.<br>Kurz gesagt: Dieser Artikel bietet einen praxisnahen \u00dcberblick dar\u00fcber, wie Bitbucket Pipelines funktioniert und was sich damit erreichen l\u00e4sst.<\/p>\n\n\n\n<p>Doch bevor wir einsteigen, kl\u00e4ren wir erst einmal einige wichtige Begriffe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Was ist CI?<\/strong><\/h2>\n\n\n\n<p>CI <strong>(Continuous Integration) <\/strong>bezeichnet die Praxis, Code automatisch zu bauen, Tests und statische Codeanalyse durchzuf\u00fchren und den Code ggf. zu mergen.<br>Das entscheidende Wort hier lautet <strong>\u201eautomatisch\u201c<\/strong>.<\/p>\n\n\n\n<p>Das manuelle Ausf\u00fchren dieser Schritte kostet Zeit und ist nicht nur ineffizient, sondern erh\u00f6ht auch das Risiko menschlicher Fehler \u2014 denn wir Menschen sind schlicht nicht gut in langwierigen, sich wiederholenden T\u00e4tigkeiten.<\/p>\n\n\n\n<p>Stattdessen richtet man einen Prozess ein (meist \u201ePipeline\u201c genannt), der automatisch ausgef\u00fchrt wird, sobald man Code in das Repository pusht.<br>Der<em>die Entwickler<\/em>in wird benachrichtigt, wenn ein Schritt fehlschl\u00e4gt, und kann das Problem dann fr\u00fchzeitig beheben.<\/p>\n\n\n\n<p>Man kann auch unterschiedliche Pipelines f\u00fcr verschiedene Branches einrichten.<br>Beispiel: F\u00fcr einen Feature-Branch m\u00f6chte man eventuell nicht bei jedem Push zeitaufwendige Integrations- oder End-to-End-Tests ausf\u00fchren, da diese in gr\u00f6\u00dferen Projekten Stunden dauern k\u00f6nnen. Das System l\u00e4sst sich also so konfigurieren, dass schwere Tests nur bei einem Merge in den Master- oder Release-Branch laufen (je nach Branching-Modell des Projekts).<\/p>\n\n\n\n<p>Typischerweise ist das Ergebnis der CI-Phase ein Artefakt, das im n\u00e4chsten Schritt deployt werden kann \u2014 etwa eine .jar-\/ .war-Datei oder ein Docker-Image.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Was ist CD?<\/strong><\/h2>\n\n\n\n<p>CD steht f\u00fcr <strong>Continuous Delivery<\/strong> oder <strong>Continuous Deployment<\/strong> und kann als Erweiterung von CI betrachtet werden.<br>Im Allgemeinen bezeichnet es alles, was <strong>nach<\/strong> einem erfolgreich abgeschlossenen CI-Durchlauf passiert \u2014 auch wenn sich die Grenze zwischen beiden Bereichen nicht immer klar ziehen l\u00e4sst (vor allem, da beide oft am selben Ort definiert werden).<\/p>\n\n\n\n<p>Die CD-Pipeline nimmt normalerweise das in der CI-Phase erzeugte Artefakt und deployed es in eine Test- oder Staging-Umgebung, damit Tester darauf zugreifen k\u00f6nnen.<br>Dazu geh\u00f6ren das Kopieren von Dateien, Setzen von Konfigurationen oder das Neustarten von Servern. Ebenso k\u00f6nnen Skripte eingebunden werden, die Versionsnummern automatisch erh\u00f6hen oder Artefakte in Repositories hochladen.<br>Optional kann man sogar das automatische Deployment in Produktion einrichten.<\/p>\n\n\n\n<p>Wie eine CI\/CD-Pipeline konkret aussieht, h\u00e4ngt immer vom jeweiligen Projekt ab \u2014 und kein Projekt gleicht dem anderen.<\/p>\n\n\n\n<p>Kurz: Auch wenn es anfangs etwas Aufwand bedeutet, lohnt sich das Einrichten einer CI\/CD-Pipeline langfristig, weil repetitive Schritte automatisiert werden und Fehler fr\u00fcher erkannt werden \u2014 da wichtige Tests bei jedem Push laufen k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Alternative CI\/CD-Plattformen<\/strong><\/h2>\n\n\n\n<p>Bei WATA Factory nutzen wir <a href=\"https:\/\/wata.es\/de\/wie-man-geheimnisse-in-bitbucket-handhabt\/\">Bitbucket Pipelines<\/a> vor allem, weil es sich nahtlos in andere Atlassian-Produkte integriert, die wir t\u00e4glich verwenden \u2014 z. B. Jira und Confluence.<\/p>\n\n\n\n<p>Es gibt jedoch zahlreiche Alternativen. Hier eine kurze \u00dcbersicht \u00fcber einige der bekanntesten Plattformen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub Actions<ul><li>Native Integration in GitHub-RepositoriesGro\u00dfe Community, einfache Nutzung<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Sehr gut f\u00fcr Open-Source-Projekte<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>GitLab CI\/CD\n<ul class=\"wp-block-list\">\n<li>Voll integriert in GitLab<\/li>\n\n\n\n<li>Integrierte Container Registry und Security-Scanning<\/li>\n\n\n\n<li>H\u00e4ufig in Enterprise- und DevOps-Teams eingesetzt<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Jenkins\n<ul class=\"wp-block-list\">\n<li>Komplett Open Source<\/li>\n\n\n\n<li>Wohl eines der \u00e4ltesten Tools in dieser Liste<\/li>\n\n\n\n<li>Self-Hosted<\/li>\n\n\n\n<li>Extrem anpassbar, aber komplexer<\/li>\n\n\n\n<li>Oft genutzt f\u00fcr anspruchsvolle, selbst gehostete Enterprise-Setups<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>CircleCI\n<ul class=\"wp-block-list\">\n<li>Nutzt Docker-Container oder virtuelle Maschinen<\/li>\n\n\n\n<li>Sehr schnelle Parallelisierung und Caching<\/li>\n\n\n\n<li>Gute Unterst\u00fctzung f\u00fcr Docker und Kubernetes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Azure DevOps Pipelines\n<ul class=\"wp-block-list\">\n<li>Starke Integration in Microsoft- und Azure-\u00d6kosystem<\/li>\n\n\n\n<li>Unterst\u00fctzt YAML-Pipelines, bietet aber auch eine GUI-Variante<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ein einfaches Bitbucket-Pipeline-Setup<\/strong><\/h2>\n\n\n\n<p>Um Bitbucket Pipelines zu verwenden, braucht man ein Bitbucket-Konto und ein Repository, in das der Code hochgeladen ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pipelines aktivieren<\/strong><\/h3>\n\n\n\n<p>Bevor man Pipelines nutzen kann, m\u00fcssen sie im Bitbucket-Interface aktiviert werden:<br>Repository \u2192 <em>Repository Settings<\/em> \u2192 <em>Pipelines<\/em> \u2192 <em>Settings<\/em> \u2192 <strong>Enable Pipelines<\/strong> einschalten.<br>Vorher wirkt sich keine Konfiguration aus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Die bitbucket-pipelines.yml<\/strong><\/h2>\n\n\n\n<p>Alle Konfigurationen f\u00fcr eine Bitbucket-Pipeline befinden sich in einer einzigen YAML-Datei, bitbucket-pipelines.yml, die sich im <strong>Root-Verzeichnis<\/strong> deines Repositories befinden muss.<br>Das bedeutet nat\u00fcrlich, dass du \u2014 wenn dein Projekt auf mehrere Repositories verteilt ist (zum Beispiel Frontend und Backend) \u2014 f\u00fcr jedes deiner Repositories eine eigene Pipeline und eine eigene bitbucket-pipelines.yml ben\u00f6tigst.<\/p>\n\n\n\n<p>Alle bitbucket-pipelines.yml-Dateien haben eine bestimmte Struktur, die die Schritte, Umgebungen und Bedingungen des CI\/CD-Prozesses definiert.<br>Die wichtigsten Elemente sind die folgenden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>image \u2013 das Docker-Image, in dem die Steps ausgef\u00fchrt werden (kann ein Standard-Image f\u00fcr die Runtime-Umgebung oder ein benutzerdefiniertes Image sein, das die Dev- oder Prod-Umgebung nachbildet)<\/li>\n\n\n\n<li>pipelines \u2013 der Hauptblock und das oberste Element, das definiert, wann und wie Steps ausgef\u00fchrt werden. Einige der n\u00fctzlichen Eigenschaften sind:<ul><li>branches \u2013 wird bei jedem Commit ausgef\u00fchrt f\u00fcr Branches, die einen bestimmten Namen haben oder einem bestimmten Namensmuster folgen (z. B. \u201emaster\u201c oder \u201e\/feature\u201c)<\/li><\/ul><ul><li>pull<strong>&#8211;<\/strong>requests \u2013 wird ausgef\u00fchrt, wenn ein Pull Request f\u00fcr einen bestimmten Branch erstellt wird. Erm\u00f6glicht ebenfalls Einschr\u00e4nkungen auf bestimmte Namensmuster, \u00e4hnlich wie \u201ebranches\u201c<\/li><\/ul><ul><li>tags \u2013 wird f\u00fcr bestimmte Tags im Git-Repository ausgef\u00fchrt<\/li><\/ul><ul><li>default \u2013 wie der Name schon sagt, eine Fallback-Option. Wird f\u00fcr jeden Commit auf jedem Branch ausgef\u00fchrt, der von keiner der oben genannten Eigenschaften abgedeckt ist<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>custom \u2013 f\u00fcr manuelle oder geplante Pipelines<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>step \u2013 eine Ausf\u00fchrungseinheit (zum Beispiel \u201ebuild and test\u201c), definiert durch Shell-Befehle. Hier passiert das Wesentliche. Ein Step kann Folgendes enthalten (unter anderem):<ul><li>script \u2013 die tats\u00e4chlichen Befehle, die in einem Step ausgef\u00fchrt werden<\/li><\/ul><ul><li>caches \u2013 Verzeichnisse (zum Beispiel \u201enode_modules\u201c), die zwischen den Runs gecached werden, was Ausf\u00fchrungen erheblich beschleunigen kann, da nicht alle Abh\u00e4ngigkeiten jedes Mal neu heruntergeladen werden m\u00fcssen<\/li><\/ul><ul><li>artifacts \u2013 in einem Step erzeugte Dateien (zum Beispiel eine .jar-Datei), die in einem anderen Step weiterverwendet werden k\u00f6nnen<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>deployment \u2013 markiert einen Step als Deployment (erscheint in der \u201eDeployments\u201c-UI von Bitbucket)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>pipe \u2013 ein benutzerdefiniertes Docker-Image f\u00fcr einen Container, der ein Skript zur Ausf\u00fchrung einer bestimmten Aufgabe enth\u00e4lt. Man kann sie sich wie vorgefertigte Bausteine vorstellen, besonders n\u00fctzlich f\u00fcr Integrationen mit Tools von Drittanbietern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ein einfaches Beispiel<\/strong><strong><\/strong><\/h3>\n\n\n\n<p>ie Bitbucket-Weboberfl\u00e4che stellt tats\u00e4chlich einige Vorlagen f\u00fcr typische Konfigurationen bereit, aber f\u00fcr diesen Artikel erstellen wir die bitbucket-pipelines.yml manuell. Da ich Java-Entwickler bin, wird das folgende Beispiel f\u00fcr ein Java-Maven-Projekt sein. Dies ist eines der einfachsten Beispiele \u00fcberhaupt:<\/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>Schauen wir uns an, was das macht:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die erste Zeile weist die Pipeline an, JDK 17 mit Maven 3.9 zu verwenden.<\/li>\n\n\n\n<li>Das Schl\u00fcsselwort <strong>default<\/strong> sagt uns, dass diese Pipeline bei jedem Commit und f\u00fcr jeden Branch ausgef\u00fchrt wird.<\/li>\n\n\n\n<li>Wir cachen den Ordner <strong>maven<\/strong>, damit zuk\u00fcnftige Builds deutlich schneller sind.<\/li>\n\n\n\n<li>Schlie\u00dflich f\u00fchren wir den Maven-Befehl aus, der das Projekt bereinigt, Abh\u00e4ngigkeiten herunterl\u00e4dt (falls erforderlich), kompiliert und Unit-Tests ausf\u00fchrt.<\/li>\n<\/ul>\n\n\n\n<p>So haben wir selbst mit diesem kleinen St\u00fcck Code bereits eine Pipeline, die den Code bei jedem Commit automatisch baut und die Tests ausf\u00fchrt.<br>Au\u00dferdem erh\u00e4ltst du eine E-Mail, wenn einer der Schritte fehlschl\u00e4gt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ein komplexeres Beispiel<\/strong><\/h2>\n\n\n\n<p>Das folgende Beispiel zeigt eine komplexere Pipeline, die getrennte und unabh\u00e4ngige Schritte f\u00fcr das Bauen, das Ausf\u00fchren von Unit-Tests, das Ausf\u00fchren von Integrationstests, das Paketieren und das Deployen des Codes enth\u00e4lt.<br>W\u00e4hrend Build und Unit-Tests bei jedem Commit ausgef\u00fchrt werden, werden Integrationstests, Paketierung und Deployment <strong>nur<\/strong> f\u00fcr Release-Branches ausgef\u00fchrt.<\/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>Zun\u00e4chst f\u00e4llt auf, dass wir unter pipelines zwei Bl\u00f6cke haben:<br>einen default-Block (der bei jedem Commit ausgef\u00fchrt wird) und einen branches-Block, der nur f\u00fcr Release-Branches ausgef\u00fchrt wird (die wir als alle Branches unter release\/ definiert haben).<\/p>\n\n\n\n<p>Beachte au\u00dferdem, dass die Schritte Build (Compile Only) und Unit Tests wiederholt werden \u2014 da wir diese ebenfalls f\u00fcr die Release-Branches ausf\u00fchren m\u00f6chten.<\/p>\n\n\n\n<p>Zus\u00e4tzlich zu Build- und Unit-Test-Schritten f\u00fchrt der branches-Abschnitt auch die Integrationstests aus und paketiert die Anwendung als JAR-Datei.<br>Diese Schritte werden ausschlie\u00dflich f\u00fcr Release-Branches ausgef\u00fchrt.<\/p>\n\n\n\n<p>Am interessantesten ist der letzte Schritt, der die scp-deploy pipe verwendet.<br>Diese Pipe nimmt \u2014 wie der Name schon vermuten l\u00e4sst \u2014 die im vorherigen Schritt erzeugten Artefakte und kopiert sie per SCP auf einen Remote-Server.<br>Damit das funktioniert, ben\u00f6tigt sie die Informationen aus dem Bereich variables.<br>Alle Werte, die mit einem $ beginnen, sind Variablen, die in der Bitbucket-Weboberfl\u00e4che als Repository-Variablen definiert werden (denn sensible Daten sollten nat\u00fcrlich nicht im Repository liegen).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fazit<\/strong><\/h2>\n\n\n\n<p>CI\/CD ist ein unverzichtbarer Bestandteil moderner Softwareentwicklung.<br>Bei WATA Factory setzen wir daf\u00fcr auf <strong>Bitbucket Pipelines<\/strong><strong>.<\/strong> Wie dieser Artikel zeigt, sind einfache Pipelines schnell eingerichtet \u2014 und auch komplexere Setups lassen sich klar strukturieren.<\/p>\n\n\n\n<p>Neben den vielen Vorteilen der Automatisierung integriert sich Bitbucket Pipelines hervorragend in das Atlassian-\u00d6kosystem \u2014 und ist deshalb unser bevorzugtes Tool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuous Integration und Continuous Deployment sind in der Softwareentwicklung heute nahezu allgegenw\u00e4rtig. Auch bei WATA Factory setzen wir in fast allen Projekten zumindest irgendeine Form automatisierter Integration und Deployment ein.Da sich diese Praktiken st\u00e4ndig weiterentwickeln, wird es immer wichtiger zu verstehen, wie man Workflows effektiv strukturiert und automatisiert.<\/p>\n","protected":false},"author":46,"featured_media":15233,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[68,181,180],"tags":[],"class_list":["post-15205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-neuigkeiten","category-technologie","category-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung - WATA Factory<\/title>\n<meta name=\"description\" content=\"Praktischer Leitfaden zu CI\/CD mit Bitbucket Pipelines: zentrale Konzepte, YAML-Struktur und Beispiele zur Automatisierung Ihres Entwicklungs-Workflows.\" \/>\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=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung - WATA Factory\" \/>\n<meta property=\"og:description\" content=\"Praktischer Leitfaden zu CI\/CD mit Bitbucket Pipelines: zentrale Konzepte, YAML-Struktur und Beispiele zur Automatisierung Ihres Entwicklungs-Workflows.\" \/>\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-DE-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=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oliver K\u00f6hler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\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 mit Bitbucket Pipelines. Eine Einf\u00fchrung\",\"datePublished\":\"2026-04-13T07:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965\"},\"wordCount\":1505,\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-DE-cover-scaled.webp\",\"articleSection\":[\"Neuigkeiten\",\"Technologie\",\"Technology\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965\",\"url\":\"https:\\\/\\\/wata.es\\\/?p=14965\",\"name\":\"CI\\\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung - 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-DE-cover-scaled.webp\",\"datePublished\":\"2026-04-13T07:00:00+00:00\",\"description\":\"Praktischer Leitfaden zu CI\\\/CD mit Bitbucket Pipelines: zentrale Konzepte, YAML-Struktur und Beispiele zur Automatisierung Ihres Entwicklungs-Workflows.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wata.es\\\/?p=14965\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#primaryimage\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-DE-cover-scaled.webp\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/BitbucketPipelines-DE-cover-scaled.webp\",\"width\":2560,\"height\":1440,\"caption\":\"Vektorillustration einer DevOps-Unendlichkeits\u00adschleife mit zwei Personen, die an CI\\\/CD-Prozessen arbeiten, umgeben von technischen Elementen.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=14965#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wata.es\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CI\\\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung\"}]},{\"@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\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\",\"name\":\"WATA Factory\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@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\":\"de\",\"@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\\\/de\\\/author\\\/o-koehler\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung - WATA Factory","description":"Praktischer Leitfaden zu CI\/CD mit Bitbucket Pipelines: zentrale Konzepte, YAML-Struktur und Beispiele zur Automatisierung Ihres Entwicklungs-Workflows.","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":"de_DE","og_type":"article","og_title":"CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung - WATA Factory","og_description":"Praktischer Leitfaden zu CI\/CD mit Bitbucket Pipelines: zentrale Konzepte, YAML-Struktur und Beispiele zur Automatisierung Ihres Entwicklungs-Workflows.","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-DE-cover-scaled.webp","type":"image\/webp"}],"author":"Oliver K\u00f6hler","twitter_card":"summary_large_image","twitter_creator":"@watafactory","twitter_site":"@watafactory","twitter_misc":{"Verfasst von":"Oliver K\u00f6hler","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten"},"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 mit Bitbucket Pipelines. Eine Einf\u00fchrung","datePublished":"2026-04-13T07:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/wata.es\/?p=14965"},"wordCount":1505,"publisher":{"@id":"https:\/\/wata.es\/#organization"},"image":{"@id":"https:\/\/wata.es\/?p=14965#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-DE-cover-scaled.webp","articleSection":["Neuigkeiten","Technologie","Technology"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/wata.es\/?p=14965","url":"https:\/\/wata.es\/?p=14965","name":"CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung - 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-DE-cover-scaled.webp","datePublished":"2026-04-13T07:00:00+00:00","description":"Praktischer Leitfaden zu CI\/CD mit Bitbucket Pipelines: zentrale Konzepte, YAML-Struktur und Beispiele zur Automatisierung Ihres Entwicklungs-Workflows.","breadcrumb":{"@id":"https:\/\/wata.es\/?p=14965#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wata.es\/?p=14965"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/wata.es\/?p=14965#primaryimage","url":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-DE-cover-scaled.webp","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/12\/BitbucketPipelines-DE-cover-scaled.webp","width":2560,"height":1440,"caption":"Vektorillustration einer DevOps-Unendlichkeits\u00adschleife mit zwei Personen, die an CI\/CD-Prozessen arbeiten, umgeben von technischen Elementen."},{"@type":"BreadcrumbList","@id":"https:\/\/wata.es\/?p=14965#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wata.es\/de\/"},{"@type":"ListItem","position":2,"name":"CI\/CD mit Bitbucket Pipelines. Eine Einf\u00fchrung"}]},{"@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":"de"},{"@type":"Organization","@id":"https:\/\/wata.es\/#organization","name":"WATA Factory","url":"https:\/\/wata.es\/","logo":{"@type":"ImageObject","inLanguage":"de","@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":"de","@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\/de\/author\/o-koehler\/"}]}},"_links":{"self":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts\/15205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/comments?post=15205"}],"version-history":[{"count":5,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts\/15205\/revisions"}],"predecessor-version":[{"id":16065,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts\/15205\/revisions\/16065"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/media\/15233"}],"wp:attachment":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/media?parent=15205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/categories?post=15205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/tags?post=15205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}