{"id":69251,"date":"2023-08-21T13:59:24","date_gmt":"2023-08-21T11:59:24","guid":{"rendered":"https:\/\/kinqsta.com\/es\/?p=69251&#038;preview=true&#038;preview_id=69251"},"modified":"2023-08-23T11:33:30","modified_gmt":"2023-08-23T09:33:30","slug":"react-despliegue-continuo","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/","title":{"rendered":"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta"},"content":{"rendered":"<p>El despliegue continuo se ha vuelto crucial en el panorama del <a href=\"https:\/\/kinqsta.com\/es\/blog\/que-es-un-desarrollador-full-stack\/\">desarrollo de software<\/a>, que evoluciona r\u00e1pidamente. Promete ciclos de publicaci\u00f3n m\u00e1s r\u00e1pidos, menos errores humanos y, en \u00faltima instancia, una mejor experiencia de usuario.<\/p>\n<p>El desarrollo de software implica resolver problemas del mundo real con c\u00f3digo. El viaje del software desde su creaci\u00f3n hasta el cliente implica numerosas etapas, que exigen velocidad, seguridad y fiabilidad. Aqu\u00ed es donde brilla el despliegue continuo.<\/p>\n<p>Este art\u00edculo explica c\u00f3mo integrar la plataforma <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CircleCI<\/a> para crear un flujo de trabajo de integraci\u00f3n continua y entrega\/despliegue continuos (<a href=\"https:\/\/kinqsta.com\/es\/blog\/herramientas-devops\/#devops-pipeline-cicd-tools\">CI\/CD<\/a>), aprovechando al mismo tiempo la potencia de la <a href=\"https:\/\/kinqsta.com\/es\/docs\/api-kinsta\/\">API de Kinsta<\/a> para el despliegue continuo de aplicaciones \u2014 como nuestro ejemplo React aqu\u00ed. Esta combinaci\u00f3n puede allanar el camino del desarrollo a la producci\u00f3n.<\/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>Entender el Despliegue Continuo<\/h2>\n<p>El despliegue continuo es algo m\u00e1s que una palabra de moda: es un cambio de paradigma en el desarrollo de software. Implica automatizar el proceso de creaci\u00f3n, prueba y despliegue de los cambios de c\u00f3digo en los servidores de producci\u00f3n.<\/p>\n<p>La <a href=\"https:\/\/kinqsta.com\/es\/blog\/como-configurar-pipeline-ci-cd\/\">canalizaci\u00f3n CI\/CD<\/a>, un componente fundamental del despliegue continuo, orquesta todo el proceso. Incluye el control de versiones, las pruebas automatizadas y el despliegue automatizado. Cada etapa es crucial para garantizar que s\u00f3lo llegue a producci\u00f3n c\u00f3digo fiable y probado.<\/p>\n<h2>\u00bfQu\u00e9 Es CircleCI?<\/h2>\n<p>CircleCI es una popular herramienta para implantar CI\/CD. Se integra con sistemas de control de versiones como <a href=\"https:\/\/kinqsta.com\/es\/blog\/como-enviar-codigo-a-github\/\">GitHub<\/a>, <a href=\"https:\/\/kinqsta.com\/es\/blog\/gitlab-vs-github\/\">GitLab<\/a> y <a href=\"https:\/\/kinqsta.com\/es\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a>, permitiendo a los desarrolladores automatizar todo el proceso de CI\/CD. Su escalabilidad, extensibilidad y compatibilidad con varios <a href=\"https:\/\/kinqsta.com\/es\/blog\/mejor-lenguaje-de-programacion-para-aprender\/\">lenguajes de programaci\u00f3n<\/a> la convierten en una herramienta vers\u00e1til para proyectos de todos los tama\u00f1os.<\/p>\n<p>Los <a href=\"https:\/\/kinqsta.com\/es\/blog\/tipos-de-desarrolladores\/\">desarrolladores<\/a> de CircleCI definen flujos de trabajo que se activan autom\u00e1ticamente al confirmar el c\u00f3digo. Esto inicia los procesos de construcci\u00f3n y prueba y, una vez completados con \u00e9xito, despliega el c\u00f3digo en el entorno de destino. Este enfoque no intervencionista no s\u00f3lo ahorra tiempo, sino que tambi\u00e9n reduce el riesgo de errores humanos durante el despliegue.<\/p>\n<h2>Comprender la API de Kinsta<\/h2>\n<p>La <a href=\"https:\/\/kinqsta.com\/es\/changelog\/api-kinsta\/\">API de Kinsta<\/a> te permite interactuar con los servicios alojados en Kinsta mediante programaci\u00f3n, con el despliegue de aplicaciones como parte de su funcionalidad. Cuando trabajes con flujos de trabajo CI\/CD, utilizar\u00e1s el comando cURL para interactuar con la API de Kinsta desde el flujo de trabajo.<\/p>\n<p>Para utilizar la API, debes tener una cuenta con al menos un sitio, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Aplicaci\u00f3n<\/a> o <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Base de Datos<\/a> de <a href=\"https:\/\/kinqsta.com\/es\/wordpress-hosting\/\">WordPress<\/a> en MyKinsta. A continuaci\u00f3n, puedes generar una clave API para autenticar tu acceso a la API.<\/p>\n<p>Para generar una clave API:<\/p>\n<ol start=\"1\">\n<li>Ve a tu panel de MyKinsta.<\/li>\n<li>Ve a la p\u00e1gina <strong>Claves API<\/strong> (<strong>Tu nombre<\/strong> &gt; <strong>Configuraci\u00f3n de la empresa<\/strong> &gt; <strong>Claves API<\/strong>).<\/li>\n<li>Haz clic en <strong>Crear Clave API<\/strong>.<\/li>\n<li>Elige una fecha de caducidad o establece una fecha de inicio personalizada y un n\u00famero de horas para que caduque la clave.<\/li>\n<li>Dale a la clave un nombre \u00fanico.<\/li>\n<li>Haz clic en <strong>Generar<\/strong>.<\/li>\n<\/ol>\n<p>Despu\u00e9s de crear una clave API, c\u00f3piala y gu\u00e1rdala en un lugar seguro (te recomendamos que utilices un <a href=\"https:\/\/kinqsta.com\/es\/blog\/administradores-contrasenas\/\">gestor de contrase\u00f1as<\/a>), ya que es la <strong>\u00fanica vez que<\/strong> se revela dentro de MyKinsta.<\/p>\n<h3>C\u00f3mo Activar el Despliegue con la API de Kinsta<\/h3>\n<p>Para activar el despliegue de una aplicaci\u00f3n en Kinsta mediante la API, necesitas el ID de la aplicaci\u00f3n y el nombre de la rama desplegable en el repositorio Git. Puedes recuperar el ID de tu aplicaci\u00f3n <a href=\"https:\/\/api-docs.kinqsta.com\/tag\/Applications#operation\/getApplications\" target=\"_blank\" rel=\"noopener noreferrer\">consultando primero la lista de tus aplicaciones<\/a>, que proporcionar\u00e1 detalles sobre cada aplicaci\u00f3n, incluido su ID.<\/p>\n<p>A continuaci\u00f3n, puedes realizar una <a href=\"https:\/\/kinqsta.com\/es\/blog\/javascript-peticion-http\/\">solicitud POST<\/a> al endpoint de la API <code><a href=\"https:\/\/api-docs.kinqsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">\/applications\/deployments<\/a><\/code> con un comando cURL:<\/p>\n<pre><code class=\"language-yaml\">curl -i -X POST \n  https:\/\/api.kinqsta.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>Este comando cURL se utilizar\u00e1 en el flujo de trabajo.<\/p>\n<h2>C\u00f3mo Empezar con CircleCI<\/h2>\n<p>Necesitar\u00e1s el c\u00f3digo fuente alojado en tu proveedor Git preferido para empezar con CircleCI. Para este tutorial, vamos a utilizar la <a href=\"https:\/\/github.com\/kinsta\/site-builder\" target=\"_blank\" rel=\"noopener noreferrer\">aplicaci\u00f3n constructora de sitios<\/a> desarrollada para el tutorial <a href=\"https:\/\/kinqsta.com\/es\/blog\/api-wordpress\/\">C\u00f3mo Crear un Sitio WordPress con la API de Kinsta<\/a>. Si\u00e9ntete libre de utilizar el repositorio navegando hasta \u00e9l en GitHub y seleccionando: <strong>Usar esta plantilla<\/strong> &gt; <strong>Crear un nuevo repositorio<\/strong>.<\/p>\n<p>En la aplicaci\u00f3n <a href=\"https:\/\/kinqsta.com\/es\/secciones\/react\/\">React<\/a>, se crean pruebas unitarias para probar cada componente. Tambi\u00e9n se utiliza <a href=\"https:\/\/kinqsta.com\/es\/blog\/extensiones-vscode\/#1-eslint\">ESLint<\/a> para que la sintaxis y el formato del c\u00f3digo sean perfectos. Vamos a configurar un flujo de trabajo CI\/CD que construya, pruebe, se asegure de que la sintaxis de nuestro c\u00f3digo es correcta y, finalmente, lo despliegue en Kinsta utilizando la API.<\/p>\n<p>Para empezar, exploremos algunos conceptos clave:<\/p>\n<ol start=\"1\">\n<li><strong>Flujos de trabajo:<\/strong> CircleCI se basa en flujos de trabajo \u2014 secuencias definidas de tareas que describen las etapas de tu proceso CI\/CD. Los flujos de trabajo pueden incluir varios pasos, como construir, probar, desplegar, etc.<\/li>\n<li><strong>Tareas:<\/strong> Las tareas son unidades individuales de trabajo dentro de un flujo de trabajo. Cada trabajo ejecuta una tarea espec\u00edfica, como compilar c\u00f3digo, ejecutar pruebas o desplegar en un servidor. Estos trabajos tambi\u00e9n pueden incluir varios pasos que se ejecutan en secuencia (ejecuci\u00f3n paralela), de modo que cuando uno falla, falla todo el trabajo.<\/li>\n<\/ol>\n<h3>Paso 1: Crear una Cuenta CircleCI<\/h3>\n<p>Visita el sitio web de CircleCI y crea una cuenta si a\u00fan no tienes una. Puedes registrarte utilizando tu proveedor de Git preferido. As\u00ed te resultar\u00e1 m\u00e1s f\u00e1cil acceder a tus repositorios sin necesidad de realizar m\u00e1s configuraciones.<\/p>\n<h3>Paso 2: Crear el Archivo de Configuraci\u00f3n<\/h3>\n<p>En el directorio root de tu proyecto, crea una carpeta <strong>.circleci<\/strong> si no existe, y dentro de esa carpeta, crea un archivo <strong>config.yml<\/strong>. Este archivo albergar\u00e1 la configuraci\u00f3n de tu flujo de trabajo.<\/p>\n<h3>Paso 3: Configura Tu Repositorio<\/h3>\n<p>Una vez que hayas iniciado sesi\u00f3n, navega hasta tu <a href=\"https:\/\/app.circleci.com\/dashboard\" target=\"_blank\" rel=\"noopener noreferrer\">panel de control CircleCI<\/a>, haz clic en <strong>Proyectos<\/strong> en la barra lateral izquierda para ver una lista de repositorios, y haz clic en el bot\u00f3n <strong>Configurar Proyecto<\/strong> del repositorio que desees configurar.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/08\/configure-repository.jpg\" alt=\"Configura tu repositorio.\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Configura tu repositorio.<\/figcaption><\/figure>\n<p>Se abrir\u00e1 un cuadro de di\u00e1logo en el que CircleCI detectar\u00e1 autom\u00e1ticamente tu archivo de configuraci\u00f3n. A continuaci\u00f3n, haz clic en el bot\u00f3n <strong>Configurar Proyecto<\/strong>. Ahora CircleCI puede acceder a tu base de c\u00f3digo y ejecutar los flujos de trabajo definidos cuando se produzcan cambios en el c\u00f3digo.<\/p>\n<h3>Paso 4: Define el Trabajo de Tu Flujo de Trabajo<\/h3>\n<p>En el centro de la configuraci\u00f3n de tu pipeline de CircleCI se encuentra este paso crucial: definir tu flujo de trabajo dentro del archivo <strong>config.yml<\/strong>. Aqu\u00ed es donde orquestas la secuencia de acciones que ejecutar\u00e1 tu pipeline. Es como esbozar el plano de tu viaje del desarrollo a producci\u00f3n.<\/p>\n<p>Comienza definiendo la versi\u00f3n de CircleCI, que actualmente es <code>2.1<\/code>:<\/p>\n<pre><code class=\"language-yaml\">version: 2.1<\/code><\/pre>\n<p>Necesitar\u00e1s una tarea <code>build<\/code> para cada proyecto React. Este trabajo se ocupa de las tareas fundamentales que hacen que tu c\u00f3digo est\u00e9 listo para el despliegue. Estas tareas abarcan la instalaci\u00f3n de las dependencias necesarias, la compilaci\u00f3n de tu c\u00f3digo, la ejecuci\u00f3n de pruebas para garantizar que todo funciona correctamente, la comprobaci\u00f3n de la calidad del c\u00f3digo y, por \u00faltimo, el env\u00edo del c\u00f3digo a su destino.<\/p>\n<p>Dado que los proyectos React a menudo necesitan herramientas como <a href=\"https:\/\/kinqsta.com\/es\/blog\/construir-slackbot-para-gestion-de-sitios\/\">Node.js<\/a> para realizar el trabajo, CircleCI simplifica el acceso a estas herramientas ofreci\u00e9ndolas como <a href=\"https:\/\/circleci.com\/developer\/images\" target=\"_blank\" rel=\"noopener noreferrer\">im\u00e1genes preempaquetadas<\/a>. En este tutorial, especifica la versi\u00f3n de Node.js que deseas utilizar. Vamos a utilizar <a href=\"https:\/\/kinqsta.com\/es\/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>Este trabajo realizar\u00e1 varios pasos, as\u00ed que vamos a crearlos. El primer paso es <code>checkout<\/code>, que obtiene la \u00faltima versi\u00f3n de tu c\u00f3digo del repositorio para que todas las acciones posteriores funcionen con el c\u00f3digo m\u00e1s reciente.<\/p>\n<pre><code class=\"language-yaml\">steps:\n  - checkout<\/code><\/pre>\n<p>Ahora, pasemos al verdadero meollo del trabajo \u2014 hacer las cosas. Los pasos que siguen a <code>checkout<\/code> cubren tareas clave: instalar dependencias, compilar el c\u00f3digo fuente, ejecutar pruebas unitarias y emplear ESLint para inspeccionar tu c\u00f3digo en busca de cualquier bandera roja.<\/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>Cada paso, como las se\u00f1ales en un viaje, tiene un nombre para ayudarte a seguir lo que ocurre cuando el flujo de trabajo est\u00e1 en pleno apogeo. Esta claridad facilita la resoluci\u00f3n de problemas y garantiza que todo va por buen camino a medida que fluye tu flujo de trabajo.<\/p>\n<h4>Activar el Despliegue Continuo en Kinsta<\/h4>\n<p>El paso final en el trabajo <code>build<\/code> es iniciar el despliegue en Kinsta a trav\u00e9s de la API. Esto requiere dos valores: tu <strong>clave API<\/strong> y tu <strong>ID de aplicaci\u00f3n<\/strong>, que no deben ser p\u00fablicos. Estos valores se mantendr\u00e1n como <a href=\"https:\/\/kinqsta.com\/es\/blog\/variables-de-entorno\/\">variables de entorno<\/a> en CircleCI. Por ahora, vamos a definir la etapa de despliegue en el flujo de trabajo:<\/p>\n<pre><code class=\"language-yaml\">- run:\n    name: Deploy to Kinsta\n    command: |\n      curl -i -X POST \n        https:\/\/api.kinqsta.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>En el c\u00f3digo proporcionado, ejecuta el comando cURL para activar el despliegue utilizando el ID de Aplicaci\u00f3n almacenado en tus variables de entorno. Recuerda que a las variables de entorno se accede utilizando la sintaxis<\/p>\n<pre><code class=\"language-yaml\">\"$VARIABLE_NAME\"<\/code><\/pre>\n<h4>Almacenamiento de Variables de Entorno con CircleCI<\/h4>\n<p>Las variables de entorno son cruciales para mantener la seguridad y flexibilidad de tus flujos de trabajo de integraci\u00f3n y despliegue continuos. Para almacenar variables de entorno en CircleCI, sigue estos pasos:<\/p>\n<ol start=\"1\">\n<li>Abre tu proyecto para ver todos los detalles de tu canalizaci\u00f3n, y haz clic en el bot\u00f3n <strong>Configuraci\u00f3n del Proyecto<\/strong>.<\/li>\n<li>Haz clic en la pesta\u00f1a <strong>Variables de Entorno<\/strong> de la barra lateral y a\u00f1ade tus variables de entorno.<\/li>\n<\/ol>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/08\/store-env-variables.jpg\" alt=\"Almacenar variables de entorno\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Almacenar variables de entorno<\/figcaption><\/figure>\n<h3>Paso 5: Configuraci\u00f3n del Flujo de Trabajo<\/h3>\n<p>Con tu(s) trabajo(s) configurado(s) y estructurado(s) en pasos organizados, la siguiente fase consiste en <a href=\"https:\/\/circleci.com\/docs\/configuration-reference\/#workflows\">configurar tu flujo de trabajo<\/a>. El flujo de trabajo act\u00faa como un orquestador, guiando la secuencia de trabajos e <a href=\"https:\/\/support.circleci.com\/hc\/en-us\/articles\/115015953868-Filter-workflows-by-branch-\">incorporando filtros espec\u00edficos<\/a> y reglas\u00a0para determinar c\u00f3mo se ejecutan estos trabajos.<\/p>\n<p>En este tutorial, crearemos un flujo de trabajo que active el trabajo de construcci\u00f3n exclusivamente cuando haya un env\u00edo o alteraciones en el c\u00f3digo de la rama <code>main<\/code> del repositorio:<\/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>Esta configuraci\u00f3n se consigue utilizando filtros, que te permiten controlar cu\u00e1ndo se ejecuta un trabajo en funci\u00f3n de determinadas condiciones. Tambi\u00e9n puedes incorporar disparadores para programar cu\u00e1ndo debe ejecutarse el flujo de trabajo (ejemplo: diariamente a las 12 a.m. 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>El flujo de trabajo anterior incluye un <code>trigger<\/code> definido con la palabra clave <code>schedule<\/code>. La expresi\u00f3n cron <code>\"0 0 * * *\"<\/code> corresponde a programar el flujo de trabajo a medianoche UTC todos los d\u00edas.<\/p>\n<p>En una expresi\u00f3n cron, hay cinco campos separados por espacios, cada uno de los cuales representa una unidad de tiempo diferente:<\/p>\n<ol start=\"1\">\n<li><strong>Minuto (0-59):<\/strong> El primer campo representa el minuto de la hora, configurado en <code>0<\/code> para que se active al comienzo de la hora.<\/li>\n<li><strong>Hora (0-23):<\/strong> El segundo campo representa la hora del d\u00eda, configurado en <code>0<\/code> para medianoche.<\/li>\n<li><strong>D\u00eda del mes (1-31):<\/strong> El tercer campo significa el d\u00eda, indicado por un asterisco (<code>*<\/code>) para cualquier d\u00eda.<\/li>\n<li><strong>Mes (1-12):<\/strong> El cuarto campo representa el mes, se\u00f1alado con un asterisco (<code>*<\/code>) para cualquier mes.<\/li>\n<li><strong>D\u00eda de la semana (0-6, donde 0 es domingo):<\/strong> El quinto campo significa el d\u00eda de la semana, tambi\u00e9n marcado con un asterisco (<code>*<\/code>) para cualquier d\u00eda.<\/li>\n<\/ol>\n<p>Con esta configuraci\u00f3n del flujo de trabajo, puedes gestionar eficazmente cu\u00e1ndo y en qu\u00e9 condiciones se ejecutan tus trabajos definidos, manteniendo un canal de CI\/CD eficiente y optimizado.<\/p>\n<h3>Paso 6: Confirmar y Observar<\/h3>\n<p>Una vez que tu flujo de trabajo est\u00e9 configurado correctamente, confirma los cambios en tu repositorio de control de versiones. CircleCI detectar\u00e1 autom\u00e1ticamente la presencia del archivo de configuraci\u00f3n y activar\u00e1 los flujos de trabajo definidos cuando se produzcan cambios en el c\u00f3digo.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/08\/circleci-job-details.jpg\" alt=\"Detalles del trabajo CircleCI.\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Detalles del trabajo CircleCI.<\/figcaption><\/figure>\n<p>Haz clic en el trabajo de construcci\u00f3n para revisar sus detalles. Si tienes m\u00e1s de un trabajo, aparecer\u00e1n todos en la lista. Cuando hagas clic en un trabajo, la pesta\u00f1a <strong>PASOS<\/strong> mostrar\u00e1 todos los pasos que ejecut\u00f3 el trabajo y si tuvieron \u00e9xito o fallaron.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/08\/circleci-job-steps.jpg\" alt=\"Pasos del trabajo.\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Pasos del trabajo.<\/figcaption><\/figure>\n<p>Tambi\u00e9n puedes hacer clic en cada paso para ver m\u00e1s detalles. Cuando hagas clic en el paso <strong>Desplegar en Kinsta<\/strong>, ver\u00e1s m\u00e1s detalles sobre la solicitud de la API y sabr\u00e1s si ha tenido \u00e9xito:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/08\/circleci-step-info.jpg\" alt=\"Informaci\u00f3n del paso.\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Informaci\u00f3n del paso.<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>El paso Desplegar en Kinsta est\u00e1 dise\u00f1ado para ejecutar el proceso de despliegue utilizando la API de Kinsta. Mostrar\u00e1 un estado correcto incluso si el proceso de despliegue real encuentra alg\u00fan problema o fallo. Esto se debe a que la respuesta del flujo de trabajo se basa en el inicio satisfactorio del despliegue, no en su finalizaci\u00f3n o estado.<\/p>\n<\/aside>\n\n<p>Cuando compruebes tu panel de control <a href=\"https:\/\/my.kinqsta.com\/?lang=es\">MyKinsta<\/a>, te dar\u00e1s cuenta de que el flujo de trabajo activa autom\u00e1ticamente el despliegue. Este es el aspecto de tu flujo de trabajo CircleCI completo:<\/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.kinqsta.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>Resumen<\/h2>\n<p>Ahora has conseguido con \u00e9xito un proceso de despliegue a medida para tu aplicaci\u00f3n React en Kinsta a trav\u00e9s de CircleCI. Este enfoque te dota de mayor flexibilidad y autoridad sobre tus despliegues, permitiendo a tu equipo ejecutar pasos especializados dentro del proceso.<\/p>\n<p>Al adoptar CircleCI, est\u00e1s dando un paso sustancial hacia la elevaci\u00f3n de tus metodolog\u00edas de desarrollo. La automatizaci\u00f3n de tu canal CI\/CD no s\u00f3lo garantiza la calidad de tu c\u00f3digo, sino que tambi\u00e9n acelera tus ciclos de lanzamiento.<\/p>\n<p><em>\u00bfC\u00f3mo utilizas la API Kinsta? \u00bfQu\u00e9 puntos finales te gustar\u00eda que se a\u00f1adieran a la API? \u00bfQu\u00e9 tutorial relacionado con la API Kinsta te gustar\u00eda leer a continuaci\u00f3n?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El despliegue continuo se ha vuelto crucial en el panorama del desarrollo de software, que evoluciona r\u00e1pidamente. Promete ciclos de publicaci\u00f3n m\u00e1s r\u00e1pidos, menos errores humanos &#8230;<\/p>\n","protected":false},"author":287,"featured_media":69252,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1270],"class_list":["post-69251","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>Despliegue Continuo de Aplicaciones React con CircleCI y Kinsta API<\/title>\n<meta name=\"description\" content=\"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta\" \/>\n<meta property=\"og:description\" content=\"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T11:59:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T09:33:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/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=\"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/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_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta\",\"datePublished\":\"2023-08-21T11:59:24+00:00\",\"dateModified\":\"2023-08-23T09:33:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\"},\"wordCount\":2339,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\",\"name\":\"Despliegue Continuo de Aplicaciones React con CircleCI y Kinsta API\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"datePublished\":\"2023-08-21T11:59:24+00:00\",\"dateModified\":\"2023-08-23T09:33:30+00:00\",\"description\":\"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinqsta.com\/es\/secciones\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/es\/#website\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"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:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/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:\/\/kinqsta.com\/es\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Despliegue Continuo de Aplicaciones React con CircleCI y Kinsta API","description":"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.","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:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/","og_locale":"es_ES","og_type":"article","og_title":"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta","og_description":"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.","og_url":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2023-08-21T11:59:24+00:00","article_modified_time":"2023-08-23T09:33:30+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/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":"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.","twitter_image":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Joel Olawanle","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta","datePublished":"2023-08-21T11:59:24+00:00","dateModified":"2023-08-23T09:33:30+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/"},"wordCount":2339,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/","url":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/","name":"Despliegue Continuo de Aplicaciones React con CircleCI y Kinsta API","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","datePublished":"2023-08-21T11:59:24+00:00","dateModified":"2023-08-23T09:33:30+00:00","description":"A\u00f1ade sin problemas CI\/CD a proyectos React utilizando CircleCI y la potente API de Kinsta para un desarrollo y despliegue eficientes.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#primaryimage","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/es\/blog\/react-despliegue-continuo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinqsta.com\/es\/secciones\/api\/"},{"@type":"ListItem","position":3,"name":"Despliegue Continuo de Aplicaciones React con CircleCI y la API de Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/es\/#website","url":"https:\/\/kinqsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","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:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/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:\/\/kinqsta.com\/es\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/69251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/comments?post=69251"}],"version-history":[{"count":8,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/69251\/revisions"}],"predecessor-version":[{"id":69334,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/69251\/revisions\/69334"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/translations\/es"},{"href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69251\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media\/69252"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media?parent=69251"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/tags?post=69251"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/topic?post=69251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}