{"id":76237,"date":"2026-05-14T09:20:12","date_gmt":"2026-05-14T08:20:12","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=76237&#038;preview=true&#038;preview_id=76237"},"modified":"2026-05-18T09:44:45","modified_gmt":"2026-05-18T08:44:45","slug":"automatisieren-staging-umgebungen-kinsta-api","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/","title":{"rendered":"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert"},"content":{"rendered":"<p><span data-path-to-node=\"4,1,1,0\">Jeder Sprint beginnt mit einem Board voller Tickets \u2013 und einem Team, das eine perfekt strukturierte Arbeitsumgebung braucht.<\/span> F\u00fcr Agenturen, die WordPress-Projekte in zweiw\u00f6chigen Zyklen durchf\u00fchren, bedeutet das, dass sie eine <a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/staging-umgebung\/\">Staging-Umgebung<\/a> in MyKinsta einrichten, bevor das erste Ticket abgeholt wird.<\/p>\n<p>Das dauert nur ein paar Minuten, aber das ist die Art von Aufgabe, die durch die Maschen f\u00e4llt, weil sie trivial aussieht.<\/p>\n<p>Mit der <a href=\"https:\/\/kinsta.com\/de\/docs\/kinsta-api\/\">Kinsta-API<\/a> kann dieser Schritt entfallen. Wenn ein Sprint in <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">Jira<\/a> beginnt, kannst du einen Webhook einrichten, der ein Ereignis in der Middleware ausl\u00f6st. Dieser liest dann die Nutzdaten, ordnet sie einer Kinsta-Website zu und ruft die API auf, um eine neue Staging-Umgebung zu erstellen.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Warum Agenturen die Bereitstellung von Umgebungen automatisieren sollten<\/h2>\n<p>Eine Umgebung zu erstellen, nachdem du einen Sprint geplant hast, bedeutet, MyKinsta zu \u00f6ffnen, die richtige Kundenwebsite aus einer Liste von Dutzenden zu finden, eine Umgebung zu erstellen und zu benennen und dann zu <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">Jira<\/a> zur\u00fcckzukehren. Das ist zwar nicht kompliziert, aber es muss zu einem bestimmten Zeitpunkt geschehen, f\u00fcr jedes Kundenprojekt.<\/p>\n<p>Wenn du das vers\u00e4umst, beginnt das Team mit der Arbeit in der Umgebung des letzten Sprints. Von da an h\u00e4ufen sich die \u00c4nderungen \u00fcbereinander, und wenn ein Fehler auftritt, gleicht die Isolierung eher der Arch\u00e4ologie als einer Fehlersuche.<\/p>\n<h2>Was du brauchst, bevor du anf\u00e4ngst<\/h2>\n<p>Um die Kinsta-API mit Jira zu verbinden, brauchst du ein Kinsta-Konto mit mindestens einer WordPress-Website in einer bestehenden Umgebung, ein Jira-Cloud-Konto mit Administratorrechten, um Webhooks zu konfigurieren, und ein lokal installiertes <a href=\"https:\/\/kinsta.com\/knowledgebase\/what-is-node-js\/\">Node.js<\/a>.<\/p>\n<p>Um dich mit der Kinsta-API zu authentifizieren, navigiere in <a href=\"https:\/\/my.kinsta.com\/?lang=de\">MyKinsta<\/a> zu <strong>[<\/strong><strong>Unternehmensname]<\/strong> &gt; <strong>Unternehmenseinstellungen<\/strong> &gt; <strong>API-Schl\u00fcssel<\/strong> und klicke auf <strong>API-Schl\u00fcssel erstellen<\/strong>.<\/p>\n<figure id=\"attachment_208873\" aria-describedby=\"caption-attachment-208873\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208873 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/api-keys-1.png\" alt=\"Das MyKinsta-Dashboard mit dem Bildschirm \u201eAPI-Schl\u00fcssel\u201c, auf dem zwei vorhandene API-Schl\u00fcssel sowie eine Schaltfl\u00e4che zum Erstellen eines neuen Schl\u00fcssels zu sehen sind.\" width=\"1200\" height=\"441\"><figcaption id=\"caption-attachment-208873\" class=\"wp-caption-text\">Das MyKinsta-Dashboard zeigt die API-Schl\u00fcssel an<\/figcaption><\/figure>\n<p>Als N\u00e4chstes gibst du dem Schl\u00fcssel einen Namen, legst eine G\u00fcltigkeitsdauer fest und klickst auf <strong>Erzeugen<\/strong>. Der Schl\u00fcssel wird nur einmal angezeigt, also notiere ihn dir, bevor du weitermachst.<\/p>\n<p>Du legst ihn in einer <code>.env<\/code>-Datei im Stammverzeichnis deines Projekts ab, zusammen mit deiner Kinsta-Unternehmens-ID, die du unter <strong>Unternehemnseinstellungen<\/strong> &gt; <strong>Abrechnungsdetails<\/strong> findest:<\/p>\n<pre><code class=\"language-bash\">KINSTA_API_KEY=your_api_key_here\nKINSTA_COMPANY_ID=your_company_id_here<\/code><\/pre>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Die Zugriffsstufe eines Kinsta-API-Schl\u00fcssels und die Rolle, die ihn erstellt hat, stimmen \u00fcberein. So haben Schl\u00fcssel auf Entwicklerebene engere Rechte als solche, die von Unternehmenseigent\u00fcmern oder Administratoren erstellt wurden. Das ist das erste, was du \u00fcberpr\u00fcfen solltest, wenn eine Anfrage einen Berechtigungsfehler zur\u00fcckgibt.<\/p>\n<\/aside>\n\n<h3>Erhalte deine Jira- und Kinsta-Site-IDs<\/h3>\n<p>Du brauchst die Kinsta-Site-ID f\u00fcr jedes Kundenprojekt in der Automatisierung. Das ist eine UUID, die Kinsta bei der Erstellung der Website vergibt. Sie erscheint in der MyKinsta-URL, wenn du eine Website \u00f6ffnest, oder durch den Aufruf von <code>GET \/sites<\/code>, sobald dein API-Schl\u00fcssel eingerichtet ist:<\/p>\n<pre><code class=\"language-bash\">https:\/\/my.kinsta.com\/sites\/details\/fbab4927-e354-4044-b226-29ac0fbd20ca\/\u2026<\/code><\/pre>\n<p>Auf der Jira-Website brauchst du die numerische Board-ID f\u00fcr jedes Projekt, das du verbinden willst. Sie erscheint in der URL (hier als <code>2<\/code>):<\/p>\n<pre><code class=\"language-bash\">https:\/\/your-domain.atlassian.net\/jira\/software\/projects\/SCRUM\/boards\/2<\/code><\/pre>\n<p>Dies ist derselbe Wert, den Jira in der <code>sprint_started<\/code> Webhook-Nutzlast als <code>originBoardId<\/code> enth\u00e4lt. Die Zuordnung von Board-IDs zu Site-IDs findest du in deiner <code>.env<\/code>-Datei:<\/p>\n<pre><code class=\"language-bash\">BOARD_ID_CLIENT_A=2\nSITE_ID_CLIENT_A=fbab4927-e354-4044-b226-29ac0fbd20ca\nBOARD_ID_CLIENT_B=5\nSITE_ID_CLIENT_B=44b5a6d1-c83f-4b0e-9a1c-2e7dbc903fa1<\/code><\/pre>\n<p>Au\u00dferdem kann Jira f\u00fcr die lokale Entwicklung den <code>localhost<\/code> nicht direkt erreichen. Mit <a href=\"https:\/\/ngrok.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ngrok<\/a> kannst du einen lokalen Port mit einer tempor\u00e4ren \u00f6ffentlichen URL f\u00fcr das Internet freigeben, die du w\u00e4hrend der Entwicklung als Webhook-Endpunkt verwenden kannst. Sobald du eine Middleware-Adresse im Einsatz hast, kannst du sie ersetzen.<\/p>\n<h2>So automatisierst du die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API<\/h2>\n<p>Diese Integration l\u00e4uft \u00fcber zwei Systeme. In Jira wird ein Webhook ausgel\u00f6st, wenn ein Sprint beginnt, und der Event-Payload wird an deine Middleware \u00fcbermittelt. Bei Kinsta liest die Middleware die Board-ID aus dem Payload, l\u00f6st sie mithilfe der Config Map in eine Site-ID auf und ruft die Kinsta-API auf, um eine einfache Staging-Umgebung mit dem Namen des Sprints zu erstellen.<\/p>\n<h3>1. Einen Jira-Webhook f\u00fcr Sprint-Ereignisse registrieren<\/h3>\n<p>Jira Cloud bietet dir zwei M\u00f6glichkeiten, einen Webhook zu registrieren. Die einfachere Option f\u00fcr die meisten Teams ist \u00fcber die Jira-Benutzeroberfl\u00e4che. Die Option <strong>Einstellungen<\/strong> &gt; <strong>System<\/strong> befindet sich im Men\u00fc oben rechts:<\/p>\n<figure id=\"attachment_208877\" aria-describedby=\"caption-attachment-208877\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208877 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/system-settings.png\" alt=\"Die Option \u201eJira Cloud System\u201c im Men\u00fc \u201eAllgemeine Einstellungen\u201c der Jira-Benutzeroberfl\u00e4che.\" width=\"1200\" height=\"575\"><figcaption id=\"caption-attachment-208877\" class=\"wp-caption-text\">Die Option Jira Cloud System in den allgemeinen Einstellungen<\/figcaption><\/figure>\n<p>W\u00e4hle dort <strong>Erweitert<\/strong> &gt; <strong>WebHooks<\/strong> und klicke dann auf <strong>Einen WebHook erstellen<\/strong>:<\/p>\n<figure id=\"attachment_208874\" aria-describedby=\"caption-attachment-208874\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208874 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/create-webhook-button.png\" alt=\"Das Jira Cloud-Verwaltungsfenster mit dem Bereich \u201eWebhooks\u201c und der Schaltfl\u00e4che \u201eWebhook erstellen\u201c oben rechts.\" width=\"1200\" height=\"315\"><figcaption id=\"caption-attachment-208874\" class=\"wp-caption-text\">Abschnitt WebHooks mit einer Schaltfl\u00e4che WebHook erstellen oben rechts<\/figcaption><\/figure>\n<p>Hier gibst du einen Namen ein, f\u00fcgst eine Middleware-URL mit angeh\u00e4ngtem <code>\/sprint<\/code> ein (eine Dummy-Option reicht vorerst aus) und w\u00e4hlst unter <strong>Ereignisse<\/strong> <strong>Sprint<\/strong> &gt; <strong>gestartet<\/strong>. Dadurch wird ein Admin-Webhook erstellt, der f\u00fcr jedes <code>sprint_started<\/code> Ereignis in deiner gesamten Jira-Instanz ausgel\u00f6st wird.<\/p>\n<figure id=\"attachment_208875\" aria-describedby=\"caption-attachment-208875\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208875 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/create-webhook-jira.png\" alt=\"Das Formular zur Erstellung eines Jira-Webhooks mit den Feldern \u201eName\u201c und \u201eURL\u201c sowie dem Abschnitt \u201eEreignisse\u201c, in dem \u201eSprint gestartet\u201c ausgew\u00e4hlt ist.\" width=\"1200\" height=\"646\"><figcaption id=\"caption-attachment-208875\" class=\"wp-caption-text\">Das Formular zur Erstellung eines Jira-Webhooks<\/figcaption><\/figure>\n<p>Die zweite M\u00f6glichkeit ist die REST-API, die <code>POST \/rest\/webhooks\/1.0\/webhook<\/code> verwendet. Das funktioniert gut, wenn die Webhook-Registrierung Teil eines Deployment-Skripts ist:<\/p>\n<pre><code class=\"language-bash\">curl -X POST \\\n\u00a0\u00a0https:\/\/your-domain.atlassian.net\/rest\/webhooks\/1.0\/webhook \\\n\u00a0\u00a0-u your-email@example.com:your-api-token \\\n\u00a0\u00a0-H 'Content-Type: application\/json' \\\n\u00a0\u00a0-d '{\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Sprint provisioning webhook\",\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/your-middleware-url.com\/sprint\",\n\u00a0\u00a0\u00a0\u00a0\"events\": [\"sprint_started\"],\n\u00a0\u00a0\u00a0\u00a0\"filters\": {},\n\u00a0\u00a0\u00a0\u00a0\"excludeBody\": false\n\u00a0\u00a0}'<\/code><\/pre>\n<p>Durch den Aufruf von <code>PUT \/rest\/webhooks\/1.0\/webhook\/refresh<\/code> wird die 30-t\u00e4gige Ablauffrist f\u00fcr den Webhook verl\u00e4ngert. Wenn Jira <code>sprint_started<\/code> ausl\u00f6st, kommt die Nutzlast an deinem Endpunkt als JSON POST mit der folgenden Struktur an:<\/p>\n<pre><code class=\"language-json\">{\n\u00a0\u00a0\"timestamp\": 1705431600000,\n\u00a0\u00a0\"webhookEvent\": \"sprint_started\",\n\u00a0\u00a0\"sprint\": {\n\u00a0\u00a0\u00a0\u00a0\"id\": 15,\n\u00a0\u00a0\u00a0\u00a0\"self\": \"https:\/\/your-domain.atlassian.net\/rest\/agile\/1.0\/sprint\/15\",\n\u00a0\u00a0\u00a0\u00a0\"state\": \"active\",\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Sprint 12\",\n\u00a0\u00a0\u00a0\u00a0\"startDate\": \"2026-02-02T00:00:00.000Z\",\n\u00a0\u00a0\u00a0\u00a0\"endDate\": \"2026-02-27T00:00:00.000Z\",\n\u00a0\u00a0\u00a0\u00a0\"originBoardId\": 2,\n\u00a0\u00a0\u00a0\u00a0\"goal\": \"Complete payment processing improvements\"\n\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Die Middleware verwendet <code>sprint.originBoardId<\/code>, um die Kinsta-Site-ID zu ermitteln, und <code>sprint.name<\/code>, um die neue Umgebung zu benennen: Jedes <code>sprint_started<\/code>-Ereignis innerhalb deiner Jira-Instanz erreicht den Endpunkt. Die Board-ID in der Config-Map sorgt daf\u00fcr, dass die Automatisierung auf das richtige Client-Projekt beschr\u00e4nkt wird und alles andere ignoriert wird.<\/p>\n<h3>2. Erstelle den Middleware-Endpunkt<\/h3>\n<p>Wenn du den Webhook eingerichtet hast, solltest du als N\u00e4chstes ein neues Node.js-Projekt initialisieren und <a href=\"https:\/\/kinsta.com\/knowledgebase\/what-is-express-js\/\">Express.js<\/a> zusammen mit <code>dotenv<\/code> installieren:<\/p>\n<pre><code class=\"language-bash\">npm init -y\nnpm install express dotenv<\/code><\/pre>\n<p><code>express<\/code> k\u00fcmmert sich um das Routing und das Parsen von Anfragen, w\u00e4hrend <code>dotenv<\/code> deine <code>.env<\/code>-Datei l\u00e4dt. Du musst <code>app.js<\/code> erstellen, um den Server einzurichten. Hier ist die vollst\u00e4ndige Datei:<\/p>\n<pre><code class=\"language-javascript\">\/\/ app.js\nconst express = require('express');\nconst crypto = require('crypto');\nrequire('dotenv').config();\nconst app = express();\n\n\/\/ Raw body parser on the \/sprint route enables HMAC signature verification\napp.use('\/sprint', express.raw({ type: 'application\/json' }));\napp.use(express.json());\n\nconst KinstaAPIUrl = 'https:\/\/api.kinsta.com\/v2';\nconst headers = {\n\u00a0\u00a0'Content-Type': 'application\/json',\n\u00a0\u00a0Authorization: `Bearer ${process.env.KINSTA_API_KEY}`\n};\n\n\/\/ Board ID to Kinsta site ID config map\nconst siteConfig = {\n\u00a0\u00a0[process.env.BOARD_ID_CLIENT_A]: process.env.SITE_ID_CLIENT_A,\n\u00a0\u00a0[process.env.BOARD_ID_CLIENT_B]: process.env.SITE_ID_CLIENT_B,\n};\n\nfunction verifyJiraSignature(req) {\n\u00a0\u00a0const signature = req.headers['x-hub-signature'];\n\u00a0\u00a0const secret = process.env.JIRA_WEBHOOK_SECRET;\n\u00a0\u00a0if (!signature || !secret) return false;\n\u00a0\u00a0const expected = 'sha256=' + crypto\n\u00a0\u00a0\u00a0\u00a0.createHmac('sha256', secret)\n\u00a0\u00a0\u00a0\u00a0.update(req.body)\n\u00a0\u00a0\u00a0\u00a0.digest('hex');\n\u00a0\u00a0return crypto.timingSafeEqual(\n\u00a0\u00a0\u00a0\u00a0Buffer.from(signature),\n\u00a0\u00a0\u00a0\u00a0Buffer.from(expected)\n\u00a0\u00a0);\n}\n\napp.post('\/sprint', async (req, res) =&gt; {\n\u00a0\u00a0if (!verifyJiraSignature(req)) {\n\u00a0\u00a0\u00a0\u00a0return res.status(401).json({ message: 'Invalid signature' });\n\u00a0\u00a0}\n\n\u00a0\u00a0const body = JSON.parse(req.body);\n\u00a0\u00a0const { webhookEvent, sprint } = body;\n\n\u00a0\u00a0if (webhookEvent !== 'sprint_started') {\n\u00a0\u00a0\u00a0\u00a0return res.status(200).json({ message: 'Event ignored' });\n\u00a0\u00a0}\n\n\u00a0\u00a0const boardId = String(sprint.originBoardId);\n\u00a0\u00a0const siteId = siteConfig[boardId];\n\n\u00a0\u00a0if (!siteId) {\n\u00a0\u00a0\u00a0\u00a0console.log(`No site configured for board ${boardId}`);\n\u00a0\u00a0\u00a0\u00a0return res.status(200).json({ message: 'Board not mapped' });\n\u00a0\u00a0}\n\n\u00a0\u00a0\/\/ Kinsta API calls added in the steps below\n\u00a0\u00a0res.status(200).json({ message: 'Received' });\n});\n\napp.listen(3000, () =&gt; console.log('Middleware running on port 3000'));<\/code><\/pre>\n<p>Um den Endpunkt zu sch\u00fctzen, generierst du w\u00e4hrend der Webhook-Einrichtung einen geheimen Schl\u00fcssel. Jira macht dies w\u00e4hrend der Einrichtung optional, aber f\u00fcr eine sichere Instanz ist es praktisch unerl\u00e4sslich.<\/p>\n<h4>Endpunkt-Sicherheit<\/h4>\n<p>Jira signiert jeden Payload und f\u00fcgt das Ergebnis als <code>sha256=&lt;hash&gt;<\/code>\u00a0in den <code>X-Hub-Signature-Header<\/code> ein. Du f\u00fcgst das Geheimnis zu deiner <code>.env<\/code>-Datei zusammen mit den anderen Anmeldeinformationen hinzu:<\/p>\n<pre><code class=\"language-bash\">JIRA_WEBHOOK_SECRET=your_webhook_secret_here<\/code><\/pre>\n<p>Die Verifizierungsfunktion befindet sich in <strong>app.js<\/strong> und verwendet das in Node eingebaute <code>crypto<\/code>-Modul. Sie liest die Signatur aus dem Request-Header, berechnet den erwarteten HMAC mit dem rohen Request-Body und vergleicht sie mit <code>timingSafeEqual<\/code> so, dass Timing-Angriffe verhindert werden. Hier ist der relevante Teil von app.js:<\/p>\n<pre><code class=\"language-javascript\">const crypto = require('crypto');\n\nfunction verifyJiraSignature(req) {\n  const signature = req.headers['x-hub-signature'];\n  const secret = process.env.JIRA_WEBHOOK_SECRET;\n  if (!signature || !secret) return false;\n  const expected = 'sha256=' crypto\n    .createHmac('sha256', secret)\n    .update(req.body)\n    .digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(expected)\n  );\n}<\/code><\/pre>\n<p>Diese Funktion ist das erste, was innerhalb des <code>POST\/Sprint<\/code>-Routenhandlers aufgerufen wird. Wenn die \u00dcberpr\u00fcfung fehlschl\u00e4gt, gibt die Middleware sofort <code>401<\/code> zur\u00fcck und nichts anderes wird ausgef\u00fchrt:<\/p>\n<pre><code class=\"language-javascript\">app.post('\/sprint', async (req, res) =&gt; {\n\u00a0\u00a0if (!verifyJiraSignature(req)) {\n\u00a0\u00a0\u00a0\u00a0return res.status(401).json({ message: 'Invalid signature' });\n\u00a0\u00a0}\n\n\u00a0\u00a0const body = JSON.parse(req.body);\n\u00a0\u00a0\/\/ \u2026rest of the handler\n});<\/code><\/pre>\n<p>Die Route verwendet <code>express.raw()<\/code> auf dem Pfad <code>\/sprint<\/code>, weil <code>verifyJiraSignature<\/code> es braucht, um den HMAC zu berechnen. Wenn die Verifizierung erfolgreich war, liefert <code>JSON.parse(req.body)<\/code> das gleiche Ergebnis wie <code>express.json()<\/code>.<\/p>\n<h3>3. Authentifizierung mit der Kinsta-API und Abruf von Websiteumgebungen<\/h3>\n<p>Alle Anfragen an die Kinsta-API verwenden eine Bearer-Token-Authentifizierung: Die <code>Header<\/code>-Konstante in <code>app.js<\/code> verwaltet diese f\u00fcr jede Anfrage in der Anwendung. Die <code>require('dotenv').config()<\/code>-Zeile am Anfang stellt sicher, dass der Schl\u00fcssel aus <code>.env<\/code> geladen wird, bevor irgendetwas anderes ausgef\u00fchrt wird, sodass er nie im Quellcode selbst erscheint.<\/p>\n<p>Kinsta verwendet f\u00fcr den Provisioning-Endpunkt keine Site-IDs, sondern Environment-IDs. Deshalb solltest du eine <code>getEnvironmentId<\/code>-Funktion unterhalb der <code>Header<\/code>-Konstante hinzuf\u00fcgen:<\/p>\n<pre><code class=\"language-javascript\">const getEnvironmentId = async (siteId) =&gt; {\n  const resp = await fetch(\n    `${KinstaAPIUrl}\/sites\/${siteId}\/environments`,\n    { method: 'GET', headers }\n  );\n  const data = await resp.json();\n  return data.site.environments[0].id;\n};<\/code><\/pre>\n<p>Diese Methode ruft <code>GET \/sites\/{siteId}\/environments<\/code> auf und gibt die ID der ersten (d.h. aktiven) Umgebung in der Antwort zur\u00fcck. Wenn eine Website mehrere Umgebungen verwendet und du eine bestimmte Umgebung finden willst, musst du den Umgebungsnamen abgleichen, anstatt das erste Ergebnis zu nehmen.<\/p>\n<h3>4. Eine einfache Staging-Umgebung mit der Kinsta-API erstellen<\/h3>\n<p>Nachdem die Site- und Environment-IDs gekl\u00e4rt sind, ruft die Middleware <code>POST \/sites\/{siteId}\/environments\/plain<\/code> auf, um die Sprint-Umgebung zu erstellen. Dies geschieht \u00fcber die Funktion <code>createSprintEnvironment<\/code> unterhalb von <code>getEnvironmentId<\/code>:<\/p>\n<pre><code class=\"language-javascript\">const createSprintEnvironment = async (siteId, sprintName) =&gt; {\n  const resp = await fetch(\n    `${KinstaAPIUrl}\/sites\/${siteId}\/environments\/plain`,\n    {\n      method: 'POST',\n      headers,\n      body: JSON.stringify({\n        display_name: sprintName,\n        is_premium: false\n      })\n    }\n  );\n  const data = await resp.json();\n  return data;\n};<\/code><\/pre>\n<p><code>display_name<\/code> erscheint in MyKinsta, w\u00e4hrend die direkte Verwendung von <code>sprint.name<\/code> aus dem Jira-Payload bedeutet, dass jede Umgebung im Dashboard dem Sprint entspricht, zu dem sie geh\u00f6rt. Das <code>is_premium<\/code>-Flag bestimmt, ob Kinsta diese Umgebung als Standard- oder <a href=\"https:\/\/kinsta.com\/de\/blog\/kinstas-staging-umgebungen\/\">Premium-Staging-Umgebung<\/a> bereitstellt. Wenn du es auf <code>false<\/code> setzt, wird eine Standardumgebung erstellt.<\/p>\n<p>Wenn die Anfrage Kinsta erreicht, wird <code>202 Accepted<\/code> mit einer <code>operation_id<\/code> anstelle einer fertigen Umgebung zur\u00fcckgegeben:<\/p>\n<pre><code class=\"language-json\">{\n\u00a0\u00a0\"operation_id\": \"environments:add-plain-54fb80af-576c-4fdc-ba4f-b596c83f15a1\",\n\u00a0\u00a0\"message\": \"Adding plain environment in progress\",\n\u00a0\u00a0\"status\": 202\n}<\/code><\/pre>\n<p>Die <code>async<\/code>\u00a0Verarbeitung von Kinsta verhindert, dass ein Anfrage-Thread blockiert wird, w\u00e4hrend die Bereitstellung abgeschlossen wird. Die <code>operation_id<\/code> \u00fcbergibst du an den Endpunkt, um den Fortschritt zu verfolgen. Als N\u00e4chstes aktualisierst du die <code>POST \/sprint<\/code>-Route, um beide Funktionen nacheinander aufzurufen:<\/p>\n<pre><code class=\"language-javascript\">app.post('\/sprint', async (req, res) =&gt; {\n\u00a0\u00a0if (!verifyJiraSignature(req)) {\n\u00a0\u00a0\u00a0\u00a0return res.status(401).json({ message: 'Invalid signature' });\n\u00a0\u00a0}\n\n\u00a0\u00a0const body = JSON.parse(req.body);\n\u00a0\u00a0const { webhookEvent, sprint } = body;\n\n\u00a0\u00a0if (webhookEvent !== 'sprint_started') {\n\u00a0\u00a0\u00a0\u00a0return res.status(200).json({ message: 'Event ignored' });\n\u00a0\u00a0}\n\n\u00a0\u00a0const boardId = String(sprint.originBoardId);\n\u00a0\u00a0const siteId = siteConfig[boardId];\n\n\u00a0\u00a0if (!siteId) {\n\u00a0\u00a0\u00a0\u00a0console.log(`No site configured for board ${boardId}`);\n\u00a0\u00a0\u00a0\u00a0return res.status(200).json({ message: 'Board not mapped' });\n\u00a0\u00a0}\ntry {\n\u00a0\u00a0\u00a0\u00a0const envId = await getEnvironmentId(siteId);\n\u00a0\u00a0\u00a0\u00a0const result = await createSprintEnvironment(siteId, sprint.name);\n\u00a0\u00a0\u00a0\u00a0res.status(200).json(result);\n\u00a0\u00a0} catch (err) {\n\u00a0\u00a0\u00a0\u00a0console.error(err);\n\u00a0\u00a0\u00a0\u00a0res.status(500).json({ message: 'Environment creation failed' });\n\u00a0\u00a0}\n});<\/code><\/pre>\n<p>Die Verwendung des <code>try<\/code>-Blocks ist sauberer als die Verwendung mehrerer <code>if<\/code>-Anweisungen. Die \u00dcberpr\u00fcfung der Jira-Signatur muss jedoch am Anfang der Datei stehen, da sie vor jedem anderen Code ausgef\u00fchrt werden muss.<\/p>\n<h3>5. Abfrage des Vorgangsstatus und Best\u00e4tigung der Bereitstellung<\/h3>\n<p>Um den Abschluss zu verfolgen, rufst du <code>GET \/operations\/{operation_id}<\/code> ab, bis der Status <code>200<\/code> ist, indem du die Funktion <code>pollOperation<\/code> unterhalb von <code>createSprintEnvironment<\/code> verwendest:<\/p>\n<pre><code class=\"language-javascript\">const pollOperation = async (operationId, intervalMs = 5000, maxAttempts = 12) =&gt; {\n\u00a0\u00a0for (let attempt = 0; attempt &lt; maxAttempts; attempt++) {\n\u00a0\u00a0\u00a0\u00a0await new Promise(resolve =&gt; setTimeout(resolve, intervalMs));\n\u00a0\u00a0\u00a0\u00a0const resp = await fetch(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0`${KinstaAPIUrl}\/operations\/${operationId}`,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{ method: 'GET', headers }\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0const data = await resp.json();\n\u00a0\u00a0\u00a0\u00a0if (data.status === 200) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(`Environment ready: ${operationId}`);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return data;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0if (data.status &gt;= 400) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throw new Error(`Operation failed: ${data.message}`);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0}\n\u00a0\u00a0throw new Error('Operation timed out after maximum attempts');\n};<\/code><\/pre>\n<p>Die Schleife wartet f\u00fcnf Sekunden zwischen den einzelnen Versuchen und deckt bis zu einer Minute der Bereitstellungszeit ab. W\u00e4hrend <code>200<\/code> den Abschluss signalisiert, zeigt jeder <code>4xx<\/code>-Status an, dass die Untersuchung fehlgeschlagen ist.<\/p>\n<figure id=\"attachment_208876\" aria-describedby=\"caption-attachment-208876\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208876 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/mykinsta-environments.png\" alt=\"Das MyKinsta-Dashboard mit der Liste der Umgebungen f\u00fcr eine WordPress-Website, auf der neben der Live-Umgebung eine einfache Staging-Umgebung mit einem Sprint-Namen zu sehen ist.\" width=\"1200\" height=\"442\"><figcaption id=\"caption-attachment-208876\" class=\"wp-caption-text\">Das MyKinsta-Dashboard zeigt die Umgebungsliste f\u00fcr eine WordPress-Website<\/figcaption><\/figure>\n<p>Wenn du das alles mit <code>node app.js<\/code> ausf\u00fchrst und einen Sprint in Jira startest, sollte die Umgebung innerhalb von ein oder zwei Minuten in MyKinsta erscheinen.<\/p>\n<h2>So bleibt deine Agentur dem Sprint immer einen Schritt voraus<\/h2>\n<p>Diese Integration stellt eine saubere, benannte einfache Staging-Umgebung in MyKinsta bereit, sobald ein Sprint in Jira gestartet wird. Der Webhook wird ausgel\u00f6st, die Middleware l\u00f6st die Board-ID in eine Site auf, die Kinsta-API erledigt den Rest und das Team holt seine Tickets in einer Umgebung ab, die bereits auf sie wartet.<\/p>\n<p>Wenn die Middleware bereit ist, in Betrieb zu gehen, ist <a href=\"https:\/\/sevalla.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sevalla<\/a> ein einfaches Bereitstellungsziel. Du pusht das Projekt zu einem Git-Provider, verbindest das Repo, f\u00fcgst die Umgebungsvariablen hinzu und aktualisierst die Jira-Webhook-URL auf die Live-Adresse.<\/p>\n<p>Dar\u00fcber hinaus ist das <a href=\"https:\/\/kinsta.com\/de\/agentur-partnerprogramm\/\">Agenturpartnerprogramm<\/a> von Kinsta ideal f\u00fcr Agenturen, die mehrere Kundenprojekte betreuen. Es bietet dir engagierten Support, Co-Marketing-M\u00f6glichkeiten und die Art von Infrastrukturpartnerschaft, die die Automatisierungsschicht unterst\u00fctzt, die du auf der Kinsta-API aufbaust.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jeder Sprint beginnt mit einem Board voller Tickets \u2013 und einem Team, das eine perfekt strukturierte Arbeitsumgebung braucht. F\u00fcr Agenturen, die WordPress-Projekte in zweiw\u00f6chigen Zyklen durchf\u00fchren, &#8230;<\/p>\n","protected":false},"author":287,"featured_media":76238,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[925],"class_list":["post-76237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Staging-Umgebungen mit Jira und der Kinsta-API automatisieren<\/title>\n<meta name=\"description\" content=\"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert\" \/>\n<meta property=\"og:description\" content=\"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-14T08:20:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-18T08:44:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert\",\"datePublished\":\"2026-05-14T08:20:12+00:00\",\"dateModified\":\"2026-05-18T08:44:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\"},\"wordCount\":1614,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png\",\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\",\"name\":\"Staging-Umgebungen mit Jira und der Kinsta-API automatisieren\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png\",\"datePublished\":\"2026-05-14T08:20:12+00:00\",\"dateModified\":\"2026-05-18T08:44:45+00:00\",\"description\":\"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Staging-Umgebungen mit Jira und der Kinsta-API automatisieren","description":"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.","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:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/","og_locale":"de_DE","og_type":"article","og_title":"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert","og_description":"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.","og_url":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2026-05-14T08:20:12+00:00","article_modified_time":"2026-05-18T08:44:45+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Joel Olawanle","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert","datePublished":"2026-05-14T08:20:12+00:00","dateModified":"2026-05-18T08:44:45+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/"},"wordCount":1614,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png","inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/","url":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/","name":"Staging-Umgebungen mit Jira und der Kinsta-API automatisieren","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png","datePublished":"2026-05-14T08:20:12+00:00","dateModified":"2026-05-18T08:44:45+00:00","description":"Nutze die Kinsta-API und Jira-Webhooks, um zu Beginn eines Sprints automatisch Staging-Umgebungen anzulegen und deine WordPress-Workflows \u00fcbersichtlich zu halten.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/05\/how-to-automate-sprint-environment-provisioning-with-jira-and-the-kinsta-api.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/automatisieren-staging-umgebungen-kinsta-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/de\/thema\/api\/"},{"@type":"ListItem","position":3,"name":"Wie man die Bereitstellung von Sprint-Umgebungen mit Jira und der Kinsta-API automatisiert"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/de\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/76237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=76237"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/76237\/revisions"}],"predecessor-version":[{"id":76270,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/76237\/revisions\/76270"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76237\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76237\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76237\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76237\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76237\/translations\/jp"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76237\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/76238"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=76237"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=76237"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=76237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}