{"id":72468,"date":"2023-08-21T13:00:06","date_gmt":"2023-08-21T12:00:06","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=72468&#038;preview=true&#038;preview_id=72468"},"modified":"2023-08-31T09:22:46","modified_gmt":"2023-08-31T08:22:46","slug":"continuous-deployment-react","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/","title":{"rendered":"Distribuzione continua di applicazioni React con CircleCI e Kinsta API"},"content":{"rendered":"<p>La Continuous Delivery (distribuzione continua) \u00e8 diventata fondamentale nel panorama in rapida evoluzione dello <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppatore-full-stack\/\">sviluppo software<\/a>. Promette cicli di rilascio pi\u00f9 rapidi, riduzione degli errori umani e, in ultima analisi, una migliore esperienza utente.<\/p>\n<p>Lo sviluppo del software consiste nel risolvere i problemi del mondo reale con il codice. Il viaggio del software dalla creazione al cliente prevede numerose fasi, che richiedono velocit\u00e0, sicurezza e affidabilit\u00e0. \u00c8 qui che la distribuzione continua d\u00e0 il meglio di s\u00e9.<\/p>\n<p>Questo articolo spiega come integrare la piattaforma <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CircleCI<\/a> per creare un flusso di lavoro di integrazione continua e consegna\/deployment continuo, continuous Integration\/Continuous Delivery \u2013 (<a href=\"https:\/\/kinsta.com\/it\/blog\/strumenti-devops\/#devops-pipeline-cicd-tools\">CI\/CD<\/a>), sfruttando al contempo la potenza dell&#8217;<a href=\"https:\/\/kinsta.com\/it\/docs\/kinsta-api\/\">API Kinsta<\/a> per il deployment continuo delle applicazioni, come nel nostro esempio React. Questa combinazione pu\u00f2 aprire un percorso agevole dallo sviluppo alla produzione.<\/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>Capire la Continuous Delivery<\/h2>\n<p>Continuous Delivery \u00e8 molto pi\u00f9 di una parola d&#8217;ordine: \u00e8 un cambiamento di paradigma nello sviluppo del software. Si tratta di automatizzare il processo di creazione, test e distribuzione delle modifiche al codice sui server di produzione.<\/p>\n<p>La <a href=\"https:\/\/kinsta.com\/it\/blog\/come-creare-una-pipeline-ci-cd\/\">pipeline CI\/CD<\/a>, un componente fondamentale della distribuzione continua, orchestra l&#8217;intero processo. Include il controllo delle versioni, i test automatici e la distribuzione automatica. Ogni fase \u00e8 fondamentale per garantire che solo il codice affidabile e testato raggiunga la produzione.<\/p>\n<h2>Cos&#8217;\u00e8 CircleCI?<\/h2>\n<p>CircleCI \u00e8 uno strumento molto diffuso per implementare il CI\/CD. Si integra con sistemi di controllo di versione come <a href=\"https:\/\/kinsta.com\/it\/blog\/come-inviare-codice-github\/\">GitHub<\/a>, <a href=\"https:\/\/kinsta.com\/it\/blog\/gitlab-vs-github\/\">GitLab<\/a> e <a href=\"https:\/\/kinsta.com\/it\/blog\/bitbucket-e-github\/\">Bitbucket<\/a>, permettendo agli sviluppatori di automatizzare l&#8217;intera pipeline CI\/CD. La sua scalabilit\u00e0, l&#8217;estensibilit\u00e0 e il supporto a diversi <a href=\"https:\/\/kinsta.com\/it\/blog\/miglior-linguaggio-di-programmazione\/\">linguaggi di programmazione<\/a> lo rendono uno strumento versatile per progetti di tutte le dimensioni.<\/p>\n<p>Gli <a href=\"https:\/\/kinsta.com\/it\/blog\/tipi-di-developer\/\">sviluppatori<\/a> di CircleCI definiscono flussi di lavoro che si attivano automaticamente al momento del commit del codice. In questo modo si avviano i processi di compilazione e di test e, una volta completati con successo, si distribuisce il codice nell&#8217;ambiente di destinazione. Questo approccio non solo fa risparmiare tempo, ma riduce anche il rischio di errori umani durante la distribuzione.<\/p>\n<h2>Capire l&#8217;API di Kinsta<\/h2>\n<p>L&#8217;<a href=\"https:\/\/kinsta.com\/it\/changelog\/kinsta-api\/\">API di Kinsta<\/a> vi permette di interagire con i servizi ospitati da Kinsta in modo programmatico e la distribuzione delle applicazioni fa parte delle sue funzionalit\u00e0. Quando lavorate con i flussi di lavoro CI\/CD, userete il comando cURL per interagire con l&#8217;API Kinsta dal flusso di lavoro.<\/p>\n<p>Per usare l&#8217;API, dovete avere un account con almeno un sito <a href=\"https:\/\/kinsta.com\/it\/hosting-wordpress\/\">WordPress<\/a>, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">un\u2019applicazione<\/a> o un <a href=\"https:\/\/sevalla.com\/database-hosting\/\">database<\/a> in MyKinsta. Potrete quindi generare una chiave API per autenticare il vostro accesso all&#8217;API.<\/p>\n<p>Per generare una chiave API seguite questi passaggi:<\/p>\n<ol start=\"1\">\n<li>Aprire la bacheca di MyKinsta.<\/li>\n<li>Andare alla pagina delle <strong>chiavi API<\/strong> (<strong>Il tuo nome<\/strong> &gt; <strong>Impostazioni dell&#8217;azienda<\/strong> &gt; <strong>Chiavi API<\/strong>).<\/li>\n<li>Fare clic su <strong>Crea chiave API<\/strong>.<\/li>\n<li>Scegliere una scadenza o impostare una data di inizio personalizzata e un numero di ore di scadenza della chiave.<\/li>\n<li>Assegnare alla chiave un nome univoco.<\/li>\n<li>Fare clic su <strong>Genera<\/strong>.<\/li>\n<\/ol>\n<p>Dopo aver creato una chiave API, copiatela e conservatela in un luogo sicuro (vi consigliamo di usare un <a href=\"https:\/\/kinsta.com\/it\/blog\/password-manager\/\">gestore di password<\/a>), poich\u00e9 viene rivelata all&#8217;interno di MyKinsta<strong> solo una volta<\/strong>.<\/p>\n<h3>Come attivare la distribuzione con l&#8217;API di Kinsta<\/h3>\n<p>Per attivare il deployment di un&#8217;applicazione su Kinsta tramite l&#8217;API, vi servono l&#8217;ID dell&#8217;applicazione e il nome del branch distribuibile nel repository Git. Potete recuperare l&#8217;ID della vostra applicazione <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Applications#operation\/getApplications\" target=\"_blank\" rel=\"noopener noreferrer\">recuperando prima l&#8217;elenco delle vostre applicazioni<\/a>, che vi fornir\u00e0 i dettagli di ogni applicazione, compreso il suo ID.<\/p>\n<p>Potete quindi fare una <a href=\"https:\/\/kinsta.com\/it\/blog\/richieste-http-javascript\/\">richiesta POST<\/a> all&#8217;endpoint dell&#8217;API <code><a href=\"https:\/\/api-docs.kinsta.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.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>Questo comando cURL verr\u00e0 utilizzato nel flusso di lavoro.<\/p>\n<h2>Primi passi con CircleCI<\/h2>\n<p>Per iniziare a lavorare con CircleCI, dovete disporre di un codice sorgente ospitato sul vostro provider Git preferito. Per questo tutorial, useremo <a href=\"https:\/\/github.com\/kinsta\/site-builder\" target=\"_blank\" rel=\"noopener noreferrer\">l\u2019applicazione site builder<\/a> sviluppata per il tutorial su <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-api\/\">come creare un sito WordPress con l\u2019API di Kinsta<\/a>. Potete usare il repository navigando su GitHub e selezionando: <strong>Use this template<\/strong> &gt; <strong>Create a new repository<\/strong>.<\/p>\n<p>Nell&#8217;applicazione <a href=\"https:\/\/kinsta.com\/it\/argomenti\/react\/\">React<\/a> vengono creati dei test unitari per verificare ogni componente. Viene utilizzato anche <a href=\"https:\/\/kinsta.com\/it\/blog\/estensioni-vscode\/#1-eslint\">ESLint<\/a> per imporre una sintassi e una formattazione del codice perfette. Impostiamo un flusso di lavoro CI\/CD che costruisce, testa, assicura che la sintassi del codice sia corretta e infine esegue il deploy su Kinsta utilizzando l&#8217;API.<\/p>\n<p>Per iniziare, esploriamo alcuni concetti chiave:<\/p>\n<ol start=\"1\">\n<li><strong>Workflow:<\/strong> CircleCI si basa sui workflow, i flussi di lavoro: sequenze definite di lavori che delineano le fasi della pipeline CI\/CD. I flussi di lavoro possono includere varie fasi come la creazione, il test, il deploy e altro ancora.<\/li>\n<li><strong>Job:<\/strong> I job sono singole unit\u00e0 di lavoro all&#8217;interno di un flusso di lavoro. Ogni job esegue un&#8217;attivit\u00e0 specifica, come la compilazione del codice, l&#8217;esecuzione di test o il deploy su un server. Questi job possono anche includere varie fasi che vengono eseguite in sequenza (esecuzione parallela) in modo che quando una di esse non va a buon fine, l&#8217;intero lavoro fallisce.<\/li>\n<\/ol>\n<h3>Passo 1: Creare un account CircleCI<\/h3>\n<p>Visitate il sito web di CircleCI e create un account se non ne avete gi\u00e0 uno. Potete registrarvi utilizzando il vostro provider Git preferito. In questo modo sar\u00e0 pi\u00f9 facile accedere ai vostri repository senza ulteriori configurazioni.<\/p>\n<h3>Passo 2: Creare il file di configurazione<\/h3>\n<p>Nella cartella principale del vostro progetto, create una cartella <strong>.circleci<\/strong> se non esiste, e all&#8217;interno di essa create un file <strong>config.yml<\/strong>. Questo file conterr\u00e0 la configurazione del vostro flusso di lavoro.<\/p>\n<h3>Passo 3: Configurare il repository<\/h3>\n<p>Una volta effettuato l&#8217;accesso, accedete alla vostra <a href=\"https:\/\/app.circleci.com\/dashboard\" target=\"_blank\" rel=\"noopener noreferrer\">dashboard CircleCI<\/a>, fate clic su <strong>Projects<\/strong> nella barra laterale di sinistra per visualizzare l&#8217;elenco dei repository e poi sul pulsante <strong>Set Up Project<\/strong> per il repository che desiderate configurare.<\/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=\"Configurare il repository.\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Configurare il repository.<\/figcaption><\/figure>\n<p>Si aprir\u00e0 una finestra di dialogo in cui CircleCI rilever\u00e0 automaticamente il vostro file di configurazione. Quindi, fate clic sul pulsante <strong>Set Up Project<\/strong>. CircleCI pu\u00f2 ora accedere alla vostra base di codice ed eseguire i flussi di lavoro definiti in caso di modifiche al codice.<\/p>\n<h3>Passo 4: Definire il job del flusso di lavoro<\/h3>\n<p>Il cuore dell&#8217;impostazione della pipeline di CircleCI \u00e8 costituito da questo passaggio cruciale: la definizione del flusso di lavoro nel file <strong>config.yml<\/strong>. \u00c8 qui che orchestrerete la sequenza di azioni che la vostra pipeline eseguir\u00e0. \u00c8 come delineare il progetto del vostro viaggio dallo sviluppo alla produzione.<\/p>\n<p>Si inizia definendo la versione di CircleCI, che attualmente \u00e8 <code>2.1<\/code>:<\/p>\n<pre><code class=\"language-yaml\">version: 2.1<\/code><\/pre>\n<p>Avrete bisogno di un job <code>build<\/code> per ogni progetto React. Questo job affronta le attivit\u00e0 fondamentali che prepara il vostro codice per la distribuzione. Queste attivit\u00e0 comprendono l&#8217;installazione delle dipendenze necessarie, la compilazione del codice, l&#8217;esecuzione di test per assicurarsi che tutto funzioni correttamente, la verifica della qualit\u00e0 del codice e infine l&#8217;invio del codice a destinazione.<\/p>\n<p>Poich\u00e9 i progetti React hanno spesso bisogno di strumenti come <a href=\"https:\/\/kinsta.com\/it\/blog\/creare-slackbot-gestire-sito\/\">Node.js<\/a> per portare a termine il lavoro, CircleCI semplifica l&#8217;accesso a questi strumenti offrendoli come <a href=\"https:\/\/circleci.com\/developer\/images\" target=\"_blank\" rel=\"noopener noreferrer\">immagini preconfezionate<\/a>. In questo tutorial, specificate la versione di Node.js che volete usare. Useremo <a href=\"https:\/\/kinsta.com\/it\/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>Questo lavoro eseguir\u00e0 diversi passaggi, quindi creiamoli. Il primo passo \u00e8 <code>checkout<\/code>, che recupera l&#8217;ultima versione del codice dal repository in modo che tutte le azioni successive funzionino con il codice pi\u00f9 recente.<\/p>\n<pre><code class=\"language-yaml\">steps:\n  - checkout<\/code><\/pre>\n<p>Ora passiamo alla parte pi\u00f9 importante del lavoro: fare le cose per bene. I passaggi che seguono <code>checkout<\/code> coprono le attivit\u00e0 principali: l&#8217;installazione delle dipendenze, la compilazione del codice sorgente, l&#8217;esecuzione dei test unitari e l&#8217;utilizzo di ESLint per controllare il codice alla ricerca di eventuali campanelli d&#8217;allarme.<\/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>Ogni passaggio, come i cartelli della segnaletica stradale, ha un nome che vi aiuta a capire cosa succede quando il flusso di lavoro \u00e8 in pieno svolgimento. Questa chiarezza facilita la risoluzione dei problemi e garantisce che tutto sia in linea con il flusso di lavoro.<\/p>\n<h4>Attivare la distribuzione continua su Kinsta<\/h4>\n<p>Il passo finale del job di <code>build<\/code> consiste nell&#8217;avviare il deployment su Kinsta tramite l&#8217;API. Questo richiede due valori: la vostra <strong>chiave API<\/strong> e l&#8217;<strong>App ID<\/strong>, che non devono essere pubblici. Questi valori saranno conservati come <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\">variabili d&#8217;ambiente<\/a> in CircleCI. Per ora, definiamo la fase di distribuzione nel flusso di lavoro:<\/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    \t-H \"Authorization: Bearer $API_KEY\"\n    \t-H \"Content-Type: application\/json\"\n    \t-d '{\n          \"app_id\": \"'\"$APP_ID\"'\",\n       \t  \"branch\": \"main\"\n    \t}'<\/code><\/pre>\n<p>Nel codice fornito, eseguite il comando cURL per attivare la distribuzione utilizzando l&#8217;ID dell&#8217;applicazione memorizzato nelle variabili d&#8217;ambiente. Ricordate che le variabili d&#8217;ambiente sono accessibili con la sintassi:<\/p>\n<pre><code class=\"language-yaml\">\"$VARIABLE_NAME\"<\/code><\/pre>\n<h4>Memorizzare le variabili d&#8217;ambiente con CircleCI<\/h4>\n<p>Le variabili d&#8217;ambiente sono fondamentali per mantenere la sicurezza e la flessibilit\u00e0 dei vostri flussi di lavoro di integrazione e distribuzione continua. Per memorizzare le variabili d&#8217;ambiente in CircleCI, seguite questi passaggi:<\/p>\n<ol start=\"1\">\n<li>Aprite il vostro progetto per vedere tutti i dettagli della pipeline e fate clic sul pulsante <strong>Project Settings<\/strong>.<\/li>\n<li>Fate clic sulla scheda <strong>Environment Variables<\/strong> nella barra laterale e aggiungete le vostre variabili d&#8217;ambiente.<\/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=\"Schermata di CircleCI con le opzione della sezione Environment Variables\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Memorizzare le variabili d&#8217;ambiente.<\/figcaption><\/figure>\n<h3>Passo 5: Configurazione del flusso di lavoro<\/h3>\n<p>Dopo aver impostato i job e averli strutturati in fasi organizzate, la fase successiva prevede la <a href=\"https:\/\/circleci.com\/docs\/configuration-reference\/#workflows\" target=\"_blank\" rel=\"noopener noreferrer\">configurazione del flusso di lavoro<\/a>. Il flusso di lavoro agisce come un orchestratore, guidando la sequenza dei job e <a href=\"https:\/\/support.circleci.com\/hc\/en-us\/articles\/115015953868-Filter-workflows-by-branch-\" target=\"_blank\" rel=\"noopener noreferrer\">incorporando filtri e regole specifiche<\/a> per determinare le modalit\u00e0 di esecuzione dei job.<\/p>\n<p>In questo tutorial, creeremo un flusso di lavoro che attiva il processo di compilazione esclusivamente quando c&#8217;\u00e8 un push o una modifica del codice nel branch <code>main<\/code> del repository:<\/p>\n<pre><code class=\"language-yaml\">workflows:\n  version: 2\n  build-test-lint:\n\tjobs:\n  \t- build:\n      \t    filters:\n              branches:\n          \tonly:\n            \t  - main<\/code><\/pre>\n<p>Questa configurazione si ottiene usando dei filtri, che vi permettono di controllare quando un job viene eseguito in base a determinate condizioni. Potete anche incorporare dei trigger per programmare quando il flusso di lavoro deve essere eseguito (per esempio: ogni giorno alle 12.00 UTC):<\/p>\n<pre><code class=\"language-yaml\">workflows:\n  version: 2\n  build-test-lint:\n    jobs:\n      - build:\n      \t  filters:\n            branches:\n              only:\n            \t- main\n    triggers:\n      - schedule:\n          cron: \"0 0 * * *\"<\/code><\/pre>\n<p>Il flusso di lavoro sopra riportato presenta un <code>trigger<\/code> definito con la parola chiave <code>schedule<\/code>. L&#8217;espressione cron <code>\"0 0 * * *\"<\/code> corrisponde alla programmazione del flusso di lavoro alla mezzanotte UTC di ogni giorno.<\/p>\n<p>In un&#8217;espressione cron ci sono cinque campi separati da spazi, ognuno dei quali rappresenta una diversa unit\u00e0 di tempo:<\/p>\n<ol start=\"1\">\n<li><strong>Minuto (0-59):<\/strong> Il primo campo rappresenta il minuto dell&#8217;ora, impostato su <code>0<\/code> per attivarsi all&#8217;inizio dell&#8217;ora.<\/li>\n<li><strong>Ora (0-23):<\/strong> Il secondo campo indica l&#8217;ora del giorno, impostata su <code>0<\/code> per la mezzanotte.<\/li>\n<li><strong>Giorno del mese (1-31):<\/strong> Il terzo campo indica il giorno, indicato da un asterisco (<code>*<\/code>) per qualsiasi giorno.<\/li>\n<li><strong>Mese (1-12):<\/strong> Il quarto campo rappresenta il mese, indicato con un asterisco (<code>*<\/code>) per qualsiasi mese.<\/li>\n<li><strong>Giorno della settimana (0-6, dove 0 \u00e8 domenica):<\/strong> Il quinto campo indica il giorno della settimana, anch&#8217;esso contrassegnato da un asterisco (<code>*<\/code>) per qualsiasi giorno.<\/li>\n<\/ol>\n<p>Con questa configurazione del flusso di lavoro, potete gestire efficacemente quando e in quali condizioni vengono eseguiti i lavori definiti, mantenendo una pipeline CI\/CD efficiente e snella.<\/p>\n<h3>Passo 6: Eseguire il commit e osservare<\/h3>\n<p>Una volta configurato il flusso di lavoro, eseguite il commit delle modifiche nel vostro repository di controllo della versione. CircleCI rilever\u00e0 automaticamente la presenza del file di configurazione e attiver\u00e0 i flussi di lavoro definiti in caso di modifiche al codice.<\/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=\"Bacheca di CircleCI con i dettagli del job\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Dettagli del job CircleCI.<\/figcaption><\/figure>\n<p>Fate clic sul job di compilazione per esaminarne i dettagli. Se avete pi\u00f9 di un job, saranno tutti elencati. Quando fate clic su un job, la scheda <strong>STEPS<\/strong> mostra tutti i passaggi eseguiti dal job e se sono andati a buon fine o meno.<\/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=\"Bacheca di CircleC con il dettaglio degli step del job\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Step del job.<\/figcaption><\/figure>\n<p>Potete anche fare clic su ogni step per vedere maggiori dettagli. Quando fate clic sul passaggio <strong>Deploy to Kinsta<\/strong>, vedrete maggiori dettagli sulla richiesta API e saprete se \u00e8 andata a buon fine:<\/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=\"Informazioni sullo step\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Informazioni sullo step.<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Lo step Deploy to Kinsta \u00e8 progettato per eseguire il processo di distribuzione utilizzando l&#8217;API di Kinsta. Lo stato di successo viene visualizzato anche se il processo di distribuzione effettivo incontra dei problemi o fallisce. Questo perch\u00e9 la risposta del flusso di lavoro si basa sul successo dell&#8217;avvio della distribuzione, non sul suo completamento o sul suo stato.<\/p>\n<\/aside>\n\n<p>Quando controllate il cruscotto di <a href=\"https:\/\/my.kinsta.com\/?lang=it\">MyKinsta<\/a>, noterete che il flusso di lavoro attiva automaticamente la distribuzione. Ecco come appare il vostro flusso di lavoro 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.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>Riepilogo<\/h2>\n<p>Ora avete ottenuto un processo di distribuzione personalizzato per la vostra applicazione React su Kinsta attraverso CircleCI. Questo approccio vi conferisce una maggiore flessibilit\u00e0 e autorit\u00e0 sulle distribuzioni, consentendo al vostro team di eseguire fasi specifiche del processo.<\/p>\n<p>Adottando CircleCI, fate un passo importante verso l&#8217;elevazione delle metodologie di sviluppo. L&#8217;automazione della pipeline CI\/CD non solo garantisce la qualit\u00e0 del codice, ma accelera anche i cicli di rilascio.<\/p>\n<p><em>Come usate Kinsta API? Quali endpoint vorreste vedere aggiunti all&#8217;API? Quale tutorial su Kinsta API vorreste leggere prossimamente?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La Continuous Delivery (distribuzione continua) \u00e8 diventata fondamentale nel panorama in rapida evoluzione dello sviluppo software. Promette cicli di rilascio pi\u00f9 rapidi, riduzione degli errori umani &#8230;<\/p>\n","protected":false},"author":287,"featured_media":72469,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26232,26212],"class_list":["post-72468","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>Distribuzione continua di applicazioni React con CircleCI e Kinsta API<\/title>\n<meta name=\"description\" content=\"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.\" \/>\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\/it\/blog\/continuous-deployment-react\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Distribuzione continua di applicazioni React con CircleCI e Kinsta API\" \/>\n<meta property=\"og:description\" content=\"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T12:00:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-31T08:22:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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=\"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Distribuzione continua di applicazioni React con CircleCI e Kinsta API\",\"datePublished\":\"2023-08-21T12:00:06+00:00\",\"dateModified\":\"2023-08-31T08:22:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\"},\"wordCount\":2115,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\",\"name\":\"Distribuzione continua di applicazioni React con CircleCI e Kinsta API\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"datePublished\":\"2023-08-21T12:00:06+00:00\",\"dateModified\":\"2023-08-31T08:22:46+00:00\",\"description\":\"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Distribuzione continua di applicazioni React con CircleCI e Kinsta API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Distribuzione continua di applicazioni React con CircleCI e Kinsta API","description":"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.","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\/it\/blog\/continuous-deployment-react\/","og_locale":"it_IT","og_type":"article","og_title":"Distribuzione continua di applicazioni React con CircleCI e Kinsta API","og_description":"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.","og_url":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-08-21T12:00:06+00:00","article_modified_time":"2023-08-31T08:22:46+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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":"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Joel Olawanle","Tempo di lettura stimato":"12 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Distribuzione continua di applicazioni React con CircleCI e Kinsta API","datePublished":"2023-08-21T12:00:06+00:00","dateModified":"2023-08-31T08:22:46+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/"},"wordCount":2115,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/","url":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/","name":"Distribuzione continua di applicazioni React con CircleCI e Kinsta API","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","datePublished":"2023-08-21T12:00:06+00:00","dateModified":"2023-08-31T08:22:46+00:00","description":"Aggiungi il metodo CI\/CD ai progetti React usando CircleCI e la potente API di Kinsta per uno sviluppo e una distribuzione efficienti.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/continuous-deployment-of-react-applications-with-circleci-and-kinsta-api.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/it\/argomenti\/api\/"},{"@type":"ListItem","position":3,"name":"Distribuzione continua di applicazioni React con CircleCI e Kinsta API"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/72468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=72468"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/72468\/revisions"}],"predecessor-version":[{"id":72727,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/72468\/revisions\/72727"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72468\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/72469"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=72468"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=72468"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=72468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}