{"id":65094,"date":"2023-08-21T12:59:07","date_gmt":"2023-08-21T11:59:07","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=65094&#038;preview=true&#038;preview_id=65094"},"modified":"2023-08-31T09:18:17","modified_gmt":"2023-08-31T08:18:17","slug":"react-continuous-deployment","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/","title":{"rendered":"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API"},"content":{"rendered":"<p>Continuous Deployment ist in der sich schnell entwickelnden <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-ein-full-stack-entwickler\/\">Softwareentwicklungslandschaft<\/a> zu einem entscheidenden Faktor geworden. Es verspricht schnellere Release-Zyklen, weniger menschliche Fehler und letztlich ein besseres Nutzererlebnis.<\/p>\n<p>Bei der Softwareentwicklung geht es darum, Probleme der realen Welt mit Code zu l\u00f6sen. Der Weg der Software von der Erstellung bis zum Kunden umfasst zahlreiche Etappen, die Schnelligkeit, Sicherheit und Zuverl\u00e4ssigkeit erfordern. Hier kommt die kontinuierliche Bereitstellung ins Spiel.<\/p>\n<p>In diesem Artikel wird erkl\u00e4rt, wie du die <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CircleCI-Plattform<\/a> f\u00fcr einen kontinuierlichen Integrations- und Continuous Delivery\/Deployment-Workflow (<a href=\"https:\/\/kinsta.com\/de\/blog\/devops-tools\/#devops-pipeline-cicd-tools\">CI\/CD<\/a>) einbinden und gleichzeitig die Leistungsf\u00e4higkeit der <a href=\"https:\/\/kinsta.com\/de\/docs\/kinsta-api\/\">Kinsta-API<\/a> f\u00fcr die kontinuierliche Bereitstellung von Anwendungen nutzen kannst &#8211; wie in unserem React-Beispiel hier. Diese Kombination kann einen reibungslosen Weg von der Entwicklung zur Produktion ebnen.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Continuous Deployment verstehen<\/h2>\n<p>Continuous Deployment ist mehr als nur ein Modewort: Es ist ein Paradigmenwechsel in der Softwareentwicklung. Es geht darum, den Prozess der Erstellung, des Testens und der Bereitstellung von Code\u00e4nderungen auf Produktionsservern zu automatisieren.<\/p>\n<p>Die <a href=\"https:\/\/kinsta.com\/de\/blog\/ci-cd-pipeline-github-aktionen-erstellen\/\">CI\/CD-Pipeline<\/a>, eine grundlegende Komponente der kontinuierlichen Bereitstellung, steuert den gesamten Prozess. Sie umfasst Versionskontrolle, automatisierte Tests und automatisierte Bereitstellung. Jeder Schritt ist wichtig, um sicherzustellen, dass nur zuverl\u00e4ssiger, getesteter Code die Produktion erreicht.<\/p>\n<h2>Was ist CircleCI?<\/h2>\n<p>CircleCI ist ein beliebtes Tool f\u00fcr die Implementierung von CI\/CD. Es l\u00e4sst sich mit Versionskontrollsystemen wie <a href=\"https:\/\/kinsta.com\/de\/blog\/wie-man-code-auf-github-veroeffentlicht\/\">GitHub<\/a>, <a href=\"https:\/\/kinsta.com\/de\/blog\/gitlab-vs-github\/\">GitLab<\/a> und <a href=\"https:\/\/kinsta.com\/de\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a> integrieren und erm\u00f6glicht es Entwicklern, die gesamte CI\/CD-Pipeline zu automatisieren. Seine Skalierbarkeit, Erweiterbarkeit und Unterst\u00fctzung f\u00fcr verschiedene <a href=\"https:\/\/kinsta.com\/de\/blog\/beste-programmiersprache-lernen-sollte\/\">Programmiersprachen<\/a> machen es zu einem vielseitigen Tool f\u00fcr Projekte jeder Gr\u00f6\u00dfe.<\/p>\n<p>CircleCI-<a href=\"https:\/\/kinsta.com\/de\/blog\/arten-von-entwicklern\/\">Entwickler<\/a> definieren Workflows, die bei Code-Commits automatisch ausgel\u00f6st werden. Dadurch werden die Build- und Testprozesse eingeleitet und der Code nach erfolgreichem Abschluss in die Zielumgebung \u00fcbertragen. Dieser &#8222;hands-off&#8220;-Ansatz spart nicht nur Zeit, sondern verringert auch das Risiko menschlicher Fehler bei der Bereitstellung.<\/p>\n<h2>Die Kinsta-API verstehen<\/h2>\n<p>Die <a href=\"https:\/\/kinsta.com\/de\/changelog\/kinsta-api\/\">Kinsta-API<\/a> erm\u00f6glicht es dir, mit den von Kinsta gehosteten Diensten programmatisch zu interagieren, wobei die Anwendungsbereitstellung ein Teil ihrer Funktionalit\u00e4t ist. Wenn du mit CI\/CD-Workflows arbeitest, verwendest du den cURL-Befehl, um aus dem Workflow heraus mit der Kinsta-API zu interagieren.<\/p>\n<p>Um die API nutzen zu k\u00f6nnen, musst du ein Konto mit mindestens einer <a href=\"https:\/\/kinsta.com\/de\/wordpress-hosting\/\">WordPress-Site<\/a>, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">-Anwendung<\/a> oder <a href=\"https:\/\/sevalla.com\/database-hosting\/\">-Datenbank<\/a> in MyKinsta haben. Dann kannst du einen API-Schl\u00fcssel generieren, um deinen Zugang zur API zu authentifizieren.<\/p>\n<p>So generierst du einen API-Schl\u00fcssel:<\/p>\n<ol start=\"1\">\n<li>Gehe zu deinem MyKinsta-Dashboard.<\/li>\n<li>Navigiere zur Seite mit den <strong>API-Schl\u00fcsseln <\/strong>(<strong>Dein Name<\/strong> &gt; <strong>Unternehmenseinstellungen<\/strong> &gt; <strong>API-Schl\u00fcssel<\/strong>).<\/li>\n<li>Klicke auf <strong>API-Schl\u00fcssel generieren<\/strong>.<\/li>\n<li>W\u00e4hle ein Ablaufdatum oder lege ein benutzerdefiniertes Startdatum und die Anzahl der Stunden fest, nach denen der Schl\u00fcssel abl\u00e4uft.<\/li>\n<li>Gib dem Schl\u00fcssel einen eindeutigen Namen.<\/li>\n<li>Klicke auf <strong>Generieren<\/strong>.<\/li>\n<\/ol>\n<p>Nachdem du einen API-Schl\u00fcssel generiert hast, kopiere ihn und bewahre ihn an einem sicheren Ort auf (wir empfehlen die Verwendung eines <a href=\"https:\/\/kinsta.com\/de\/blog\/passwort-manager\/\">Passwortmanagers<\/a>), da er <strong>nur dann<\/strong> in MyKinsta angezeigt wird.<\/p>\n<h3>So l\u00f6st du die Bereitstellung mit der Kinsta-API aus<\/h3>\n<p>Um eine Anwendung \u00fcber die API an Kinsta zu \u00fcbermitteln, brauchst du die ID der Anwendung und den Namen des zu \u00fcbermittelnden Zweigs im Git-Repository. Du kannst die ID deiner Anwendung abrufen, indem du zuerst <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Applications#operation\/getApplications\" target=\"_blank\" rel=\"noopener noreferrer\">die Liste deiner Anwendungen abrufst<\/a>, die Details zu jeder Anwendung, einschlie\u00dflich ihrer ID, enth\u00e4lt.<\/p>\n<p>Dann kannst du eine <a href=\"https:\/\/kinsta.com\/de\/blog\/javascript-http-anfrage\/\">POST-Anfrage<\/a> an den API-Endpunkt <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">\/applications\/deployments<\/a><\/code> endpunkt mit einem cURL-Befehl stellen:<\/p>\n<pre><code class=\"language-yaml\">curl -i -X POST \n  https:\/\/api.kinsta.com\/v2\/applications\/deployments \n  -H 'Authorization: Bearer &lt;YOUR_TOKEN_HERE&gt;' \n  -H 'Content-Type: application\/json' \n  -d '{\n    \"app_id\": \"&lt;YOUR_APP_ID&gt;\",\n    \"branch\": \"main\"\n  }'<\/code><\/pre>\n<p>Dieser cURL-Befehl wird im Workflow verwendet.<\/p>\n<h2>Erste Schritte mit CircleCI<\/h2>\n<p>Um mit CircleCI loszulegen, brauchst du Quellcode, der bei deinem bevorzugten Git-Anbieter gehostet wird. F\u00fcr dieses Tutorial verwenden wir die <a href=\"https:\/\/github.com\/kinsta\/site-builder\" target=\"_blank\" rel=\"noopener noreferrer\">Site-Builder-Anwendung<\/a>, die f\u00fcr das Tutorial <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-api\/\">How To Create a WordPress Site With Kinsta API<\/a> entwickelt wurde. Du kannst das Repository verwenden, indem du es auf GitHub aufrufst und ausw\u00e4hlst: <strong>Diese Vorlage verwenden<\/strong> &gt; <strong>Ein neues Repository erstellen<\/strong>.<\/p>\n<p>In der <a href=\"https:\/\/kinsta.com\/de\/thema\/react\/\">React<\/a>-Anwendung werden Unit-Tests erstellt, um jede Komponente zu testen. <a href=\"https:\/\/kinsta.com\/de\/blog\/vscode-erweiterungen\/#1-eslint\">ESLint<\/a> wird auch verwendet, um eine perfekte Syntax und Codeformatierung zu gew\u00e4hrleisten. Richten wir einen CI\/CD-Workflow ein, der unsere Anwendung baut, testet, sicherstellt, dass die Syntax unseres Codes korrekt ist, und sie schlie\u00dflich \u00fcber die API auf Kinsta bereitstellt.<\/p>\n<p>Um loszulegen, wollen wir uns einige wichtige Konzepte ansehen:<\/p>\n<ol start=\"1\">\n<li><strong>Workflows:<\/strong> CircleCI basiert auf Workflows &#8211; definierten Abfolgen von Auftr\u00e4gen, die die Phasen deiner CI\/CD-Pipeline umrei\u00dfen. Workflows k\u00f6nnen verschiedene Schritte umfassen, wie z. B. das Erstellen, Testen, Bereitstellen und mehr.<\/li>\n<li><strong>Jobs:<\/strong> Jobs sind einzelne Arbeitseinheiten innerhalb eines Workflows. Jeder Job f\u00fchrt eine bestimmte Aufgabe aus, z. B. die Kompilierung von Code, die Durchf\u00fchrung von Tests oder die Bereitstellung auf einem Server. Diese Auftr\u00e4ge k\u00f6nnen auch verschiedene Schritte umfassen, die nacheinander ausgef\u00fchrt werden (parallele Ausf\u00fchrung), so dass bei einem Fehler der gesamte Auftrag ausf\u00e4llt.<\/li>\n<\/ol>\n<h3>Schritt 1: Erstelle ein CircleCI-Konto<\/h3>\n<p>Besuche die CircleCI-Website und erstelle ein Konto, falls du noch keins hast. Du kannst dich mit deinem bevorzugten Git-Anbieter anmelden. Das macht es einfacher, ohne weitere Konfiguration auf deine Repositories zuzugreifen.<\/p>\n<h3>Schritt 2: Erstelle die Konfigurationsdatei<\/h3>\n<p>Erstelle im Stammverzeichnis deines Projekts den Ordner <strong>.circleci<\/strong>, falls er noch nicht existiert, und erstelle in diesem Ordner eine Datei <strong>config.yml<\/strong>. In dieser Datei wird die Konfiguration deines Workflows gespeichert.<\/p>\n<h3>Schritt 3: Konfiguriere dein Repository<\/h3>\n<p>Sobald du eingeloggt bist, navigierst du zu deinem <a href=\"https:\/\/app.circleci.com\/dashboard\" target=\"_blank\" rel=\"noopener noreferrer\">CircleCI Dashboard<\/a>, klickst in der linken Seitenleiste auf <strong>Projekte<\/strong>, um eine Liste der Repositories zu sehen, und klickst auf die Schaltfl\u00e4che <strong>Projekt einrichten<\/strong> f\u00fcr das Repository, das du konfigurieren m\u00f6chtest.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/configure-repository.jpg\" alt=\"Konfiguriere dein Repository\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Konfiguriere dein Repository<\/figcaption><\/figure>\n<p>Daraufhin wird ein Dialog ge\u00f6ffnet, in dem CircleCI automatisch deine Konfigurationsdatei erkennt. Klicke dann auf die Schaltfl\u00e4che <strong>Projekt ein richten<\/strong>. CircleCI kann nun auf deine Codebasis zugreifen und die definierten Workflows bei Code\u00e4nderungen ausf\u00fchren.<\/p>\n<h3>Schritt 4: Definiere die Aufgabe deines Workflows<\/h3>\n<p>Der wichtigste Schritt beim Einrichten deiner CircleCI-Pipeline ist die Definition deines Workflows in der Datei <strong>config.yml<\/strong>. Hier legst du die Reihenfolge der Aktionen fest, die deine Pipeline ausf\u00fchren soll. Das ist sozusagen die Blaupause f\u00fcr deine Reise von der Entwicklung zur Produktion.<\/p>\n<p>Zun\u00e4chst legst du die CircleCI-Version fest, die derzeit <code>2.1<\/code> ist:<\/p>\n<pre><code class=\"language-yaml\">version: 2.1<\/code><\/pre>\n<p>Du brauchst einen <code>build<\/code> Job f\u00fcr jedes React-Projekt. Dieser Job k\u00fcmmert sich um die grundlegenden Aufgaben, die deinen Code bereit f\u00fcr die Bereitstellung machen. Dazu geh\u00f6ren die Installation der erforderlichen Abh\u00e4ngigkeiten, die Kompilierung deines Codes, die Durchf\u00fchrung von Tests, um sicherzustellen, dass alles reibungslos funktioniert, die \u00dcberpr\u00fcfung des Codes auf seine Qualit\u00e4t und schlie\u00dflich die Auslieferung des Codes an sein Ziel.<\/p>\n<p>Da React-Projekte oft Tools wie <a href=\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\">Node.js<\/a> ben\u00f6tigen, um die Arbeit zu erledigen, vereinfacht CircleCI den Zugang zu diesen Tools, indem es sie als <a href=\"https:\/\/circleci.com\/developer\/images\" target=\"_blank\" rel=\"noopener noreferrer\">vorgefertigte Pakete<\/a> anbietet. In diesem Tutorial gibst du die Version von Node.js an, die du verwenden m\u00f6chtest. Wir verwenden <a href=\"https:\/\/kinsta.com\/de\/blog\/node-js-20\/\">Node.js v20<\/a>.<\/p>\n<pre><code class=\"language-yaml\">jobs:\n  build:\n    docker:\n      - image: cimg\/node:20.5.0<\/code><\/pre>\n<p>Dieser Job wird verschiedene Schritte ausf\u00fchren, also lass uns diese erstellen. Der erste Schritt ist <code>checkout<\/code>, der die neueste Version deines Codes aus dem Repository holt, damit alle nachfolgenden Aktionen mit dem neuesten Code funktionieren.<\/p>\n<pre><code class=\"language-yaml\">steps:\n  - checkout<\/code><\/pre>\n<p>Jetzt geht es ans Eingemachte &#8211; die Dinge zu erledigen. Die Schritte, die auf <code>checkout<\/code> folgen, decken die wichtigsten Aufgaben ab: Installieren von Abh\u00e4ngigkeiten, Kompilieren des Quellcodes, Ausf\u00fchren von Unit-Tests und die Verwendung von ESLint, um deinen Code auf rote Fahnen zu \u00fcberpr\u00fcfen.<\/p>\n<pre><code class=\"language-yaml\">steps:\n  - checkout\n  - run:\n      name: Install Dependencies\n      command: npm install\n  - run:\n      name: Compile Source Code\n      command: npm run build\n  - run:\n      name: Run Unit Tests\n      command: npm test\n  - run:\n      name: Run ESLint\n      command: npm run lint<\/code><\/pre>\n<p>Jeder Schritt ist wie ein Wegweiser benannt, damit du nachvollziehen kannst, was passiert, wenn der Workflow in vollem Gange ist. Diese Klarheit macht es einfach, Fehler zu beheben und sicherzustellen, dass alles in der richtigen Reihenfolge abl\u00e4uft.<\/p>\n<h4>Ausl\u00f6sen der kontinuierlichen Bereitstellung in Kinsta<\/h4>\n<p>Der letzte Schritt im <code>build<\/code> Job besteht darin, die Bereitstellung an Kinsta \u00fcber die API zu initiieren. Daf\u00fcr sind zwei Werte erforderlich: dein <strong>API-Schl\u00fcssel<\/strong> und deine <strong>App-ID<\/strong>, die nicht \u00f6ffentlich sein sollten. Diese Werte werden als <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\">Umgebungsvariablen<\/a> in CircleCI gespeichert. Definieren wir nun die Bereitstellungsphase im Workflow:<\/p>\n<pre><code class=\"language-yaml\">- run:\n    name: Deploy to Kinsta\n    command: |\n      curl -i -X POST \n        https:\/\/api.kinsta.com\/v2\/applications\/deployments \n        -H \"Authorization: Bearer $API_KEY\" \n        -H \"Content-Type: application\/json\" \n        -d '{\n          \"app_id\": \"'\"$APP_ID\"'\",\n          \"branch\": \"main\"\n        }'<\/code><\/pre>\n<p>Im mitgelieferten Code f\u00fchrst du den cURL-Befehl aus, um die Bereitstellung mit Hilfe der in deinen Umgebungsvariablen gespeicherten Anwendungs-ID auszul\u00f6sen. Erinnere dich daran, dass der Zugriff auf die Umgebungsvariablen mit der folgenden Syntax erfolgt:<\/p>\n<pre><code class=\"language-yaml\">\"$VARIABLE_NAME\"<\/code><\/pre>\n<h4>Speichern von Umgebungsvariablen mit CircleCI<\/h4>\n<p>Umgebungsvariablen sind entscheidend f\u00fcr die Sicherheit und Flexibilit\u00e4t deiner kontinuierlichen Integrations- und Deployment-Workflows. Um Umgebungsvariablen in CircleCI zu speichern, befolge diese Schritte:<\/p>\n<ol start=\"1\">\n<li>\u00d6ffne dein Projekt, um alle Details zu deiner Pipeline zu sehen, und klicke auf die Schaltfl\u00e4che <strong>Projekteinstellungen<\/strong>.<\/li>\n<li>Klicke auf die Registerkarte <strong>Umgebungsvariablen<\/strong> in der Seitenleiste und f\u00fcge deine Umgebungsvariablen hinzu.<\/li>\n<\/ol>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/store-env-variables.jpg\" alt=\"Speichere die Umgebungsvariablen\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Speichere die Umgebungsvariablen<\/figcaption><\/figure>\n<h3>Schritt 5: Workflow-Konfiguration<\/h3>\n<p>Nachdem du deine Aufgabe(n) eingerichtet und in organisierte Schritte gegliedert hast, geht es in der n\u00e4chsten Phase darum, <a href=\"https:\/\/circleci.com\/docs\/configuration-reference\/#workflows\" target=\"_blank\" rel=\"noopener noreferrer\">deinen Workflow zu konfigurieren<\/a>. Der Workflow fungiert als Orchestrator, der die Reihenfolge der Auftr\u00e4ge steuert und <a href=\"https:\/\/support.circleci.com\/hc\/en-us\/articles\/115015953868-Filter-workflows-by-branch-\">bestimmte Filter und Regeln enth\u00e4lt<\/a>, die bestimmen, wie diese Auftr\u00e4ge ausgef\u00fchrt werden.<\/p>\n<p>In diesem Leitfaden erstellen wir einen Workflow, der den Build-Job ausschlie\u00dflich dann ausl\u00f6st, wenn es einen Push oder \u00c4nderungen am Code im <code>main<\/code> Branch des Repositorys gibt:<\/p>\n<pre><code class=\"language-yaml\">workflows:\n  version: 2\n  build-test-lint:\n    jobs:\n      - build:\n          filters:\n            branches:\n              only:\n                - main<\/code><\/pre>\n<p>Diese Konfiguration erfolgt mithilfe von Filtern, mit denen du steuern kannst, wann ein Job auf der Grundlage bestimmter Bedingungen ausgef\u00fchrt wird. Du kannst auch Ausl\u00f6ser einbauen, um festzulegen, wann der Workflow ausgef\u00fchrt werden soll (Beispiel: t\u00e4glich um 12 Uhr UTC):<\/p>\n<pre><code class=\"language-yaml\">workflows:\n  version: 2\n  build-test-lint:\n    jobs:\n      - build:\n          filters:\n            branches:\n              only:\n                - main\n    triggers:\n      - schedule:\n          cron: \"0 0 * * *\"<\/code><\/pre>\n<p>Der obige Workflow enth\u00e4lt eine <code>trigger<\/code>, die mit dem Schl\u00fcsselwort <code>schedule<\/code> definiert ist. Der cron-Ausdruck <code>\"0 0 * * *\"<\/code> entspricht der t\u00e4glichen Ausf\u00fchrung des Workflows um Mitternacht UTC.<\/p>\n<p>In einem cron-Ausdruck gibt es f\u00fcnf durch Leerzeichen getrennte Felder, die jeweils f\u00fcr eine andere Zeiteinheit stehen:<\/p>\n<ol start=\"1\">\n<li><strong>Minute (0-59):<\/strong> Das erste Feld steht f\u00fcr die Minute der Stunde, die auf <code>0<\/code> gesetzt wird, um zu Beginn der Stunde auszul\u00f6sen.<\/li>\n<li><strong>Stunde (0-23):<\/strong> Das zweite Feld bezeichnet die Stunde des Tages, die auf <code>0<\/code> f\u00fcr Mitternacht eingestellt ist.<\/li>\n<li><strong>Tag des Monats (1-31):<\/strong> Das dritte Feld bezeichnet den Tag, der durch ein Sternchen (<code>*<\/code>) f\u00fcr einen beliebigen Tag angezeigt wird.<\/li>\n<li><strong>Monat (1-12):<\/strong> Das vierte Feld steht f\u00fcr den Monat, gekennzeichnet durch ein Sternchen (<code>*<\/code>) f\u00fcr einen beliebigen Monat.<\/li>\n<li><strong>Wochentag (0-6, wobei 0 f\u00fcr Sonntag steht):<\/strong> Das f\u00fcnfte Feld steht f\u00fcr den Wochentag, der ebenfalls mit einem Sternchen (<code>*<\/code>) f\u00fcr einen beliebigen Tag gekennzeichnet ist.<\/li>\n<\/ol>\n<p>Mit dieser Workflow-Konfiguration kannst du effektiv steuern, wann und unter welchen Bedingungen deine definierten Jobs ausgef\u00fchrt werden, um eine effiziente und optimierte CI\/CD-Pipeline zu erhalten.<\/p>\n<h3>Schritt 6: \u00dcbertragen und Beobachten<\/h3>\n<p>Sobald dein Workflow erfolgreich konfiguriert ist, \u00fcbergibst du deine \u00c4nderungen an dein Versionskontroll-Repository. CircleCI erkennt automatisch das Vorhandensein der Konfigurationsdatei und l\u00f6st deine definierten Workflows bei Code\u00e4nderungen aus.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/circleci-job-details.jpg\" alt=\"Details zum CircleCI-Job\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Details zum CircleCI-Job<\/figcaption><\/figure>\n<p>Klicke auf den Build-Job, um seine Details zu \u00fcberpr\u00fcfen. Wenn du mehr als einen Job hast, werden sie alle aufgelistet. Wenn du auf einen Auftrag klickst, werden auf der Registerkarte <strong>SCHRITTE<\/strong> alle Schritte angezeigt, die der Auftrag ausgef\u00fchrt hat und ob sie erfolgreich waren oder nicht.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/circleci-job-steps.jpg\" alt=\"Job-Schritte\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Job-Schritte<\/figcaption><\/figure>\n<p>Du kannst auch auf jeden Schritt klicken, um weitere Details zu sehen. Wenn du auf den Schritt <strong>Deploy to Kinsta<\/strong> klickst, siehst du weitere Details \u00fcber die API-Anfrage und erf\u00e4hrst, ob sie erfolgreich war:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/circleci-step-info.jpg\" alt=\"Schrittinformationen\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Schrittinformationen<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Der Schritt Deploy to Kinsta dient dazu, den Bereitstellungsprozess \u00fcber die Kinsta-API auszuf\u00fchren. Er zeigt einen erfolgreichen Status an, auch wenn der eigentliche Bereitstellungsprozess auf Probleme oder Fehler st\u00f6\u00dft. Das liegt daran, dass die Antwort des Workflows auf dem erfolgreichen Start der Bereitstellung basiert und nicht auf deren Abschluss oder Status.<\/p>\n<\/aside>\n\n<p>Wenn du dein <a href=\"https:\/\/my.kinsta.com\/?lang=de\">MyKinsta<\/a>-Dashboard \u00fcberpr\u00fcfst, wirst du feststellen, dass der Workflow die Bereitstellung automatisch ausl\u00f6st. So sieht dein vollst\u00e4ndiger CircleCI-Workflow aus:<\/p>\n<pre><code class=\"language-yaml\">version: 2.1\njobs:\n  build:\n    docker:\n      - image: cimg\/node:20.5.0\n    steps:\n      - checkout # Check out the code from the repository\n      - run:\n          name: Install Dependencies\n          command: npm install\n      - run:\n          name: Compile Source Code\n          command: npm run build\n      - run:\n          name: Run Unit Tests\n          command: npm test\n      - run:\n          name: Run ESLint\n          command: npm run lint\n- run:\n    name: Deploy to Kinsta\n    command: |\n      curl -i -X POST \n        https:\/\/api.kinsta.com\/v2\/applications\/deployments \n        -H \"Authorization: Bearer $API_KEY\" \n        -H \"Content-Type: application\/json\" \n        -d '{\n          \"app_id\": \"'\"$APP_ID\"'\",\n          \"branch\": \"main\"\n        }'\n\nworkflows:\n  version: 2\n  build-test-lint:\n    jobs:\n      - build:\n          filters:\n            branches:\n              only:\n                - main<\/code><\/pre>\n<h2>Zusammenfassung<\/h2>\n<p>Du hast nun erfolgreich einen ma\u00dfgeschneiderten Bereitstellungsprozess f\u00fcr deine React-Anwendung auf Kinsta \u00fcber CircleCI realisiert. Dieser Ansatz gibt dir mehr Flexibilit\u00e4t und Autorit\u00e4t bei der Bereitstellung und erm\u00f6glicht es deinem Team, spezielle Schritte innerhalb des Prozesses auszuf\u00fchren.<\/p>\n<p>Mit der Einf\u00fchrung von CircleCI machst du einen gro\u00dfen Schritt zur Verbesserung deiner Entwicklungsmethoden. Die Automatisierung deiner CI\/CD-Pipeline garantiert nicht nur die Qualit\u00e4t deines Codes, sondern beschleunigt auch deine Release-Zyklen.<\/p>\n<p><em>Wie nutzt du die Kinsta API? Welche Endpunkte w\u00fcrdest du gerne zur API hinzugef\u00fcgt sehen? Welches Kinsta-API-Tutorial w\u00fcrdest du gerne als n\u00e4chstes lesen?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuous Deployment ist in der sich schnell entwickelnden Softwareentwicklungslandschaft zu einem entscheidenden Faktor geworden. Es verspricht schnellere Release-Zyklen, weniger menschliche Fehler und letztlich ein besseres Nutzererlebnis. &#8230;<\/p>\n","protected":false},"author":287,"featured_media":65095,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[925,975],"class_list":["post-65094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-react"],"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>Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API<\/title>\n<meta name=\"description\" content=\"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.\" \/>\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\/react-continuous-deployment\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API\" \/>\n<meta property=\"og:description\" content=\"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\" \/>\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=\"2023-08-21T11:59:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-31T08:18:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\" \/>\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=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API\",\"datePublished\":\"2023-08-21T11:59:07+00:00\",\"dateModified\":\"2023-08-31T08:18:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\"},\"wordCount\":2038,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\",\"name\":\"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"datePublished\":\"2023-08-21T11:59:07+00:00\",\"dateModified\":\"2023-08-31T08:18:17+00:00\",\"description\":\"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#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\":\"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API\"}]},{\"@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":"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API","description":"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.","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\/react-continuous-deployment\/","og_locale":"de_DE","og_type":"article","og_title":"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API","og_description":"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.","og_url":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-08-21T11:59:07+00:00","article_modified_time":"2023-08-31T08:18:17+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Joel Olawanle","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API","datePublished":"2023-08-21T11:59:07+00:00","dateModified":"2023-08-31T08:18:17+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/"},"wordCount":2038,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/","url":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/","name":"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","datePublished":"2023-08-21T11:59:07+00:00","dateModified":"2023-08-31T08:18:17+00:00","description":"F\u00fcge nahtlos CI\/CD zu React-Projekten hinzu, indem du CircleCI und die leistungsstarke Kinsta-API f\u00fcr effiziente Entwicklung und Bereitstellung nutzt.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/#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":"Continuous Deployment von React-Anwendungen mit CircleCI und Kinsta API"}]},{"@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\/65094","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=65094"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65094\/revisions"}],"predecessor-version":[{"id":65313,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65094\/revisions\/65313"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65094\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/65095"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=65094"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=65094"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=65094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}