{"id":55129,"date":"2023-08-21T15:11:12","date_gmt":"2023-08-21T13:11:12","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=55129&#038;preview=true&#038;preview_id=55129"},"modified":"2023-08-30T10:32:59","modified_gmt":"2023-08-30T08:32:59","slug":"ci-cd-pipeline-maken","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/","title":{"rendered":"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API"},"content":{"rendered":"<p>In de snelle wereld van <a href=\"https:\/\/kinsta.com\/web-development\/\">webdevelopment<\/a> zijn continuous integration en continuous deployment (<a href=\"https:\/\/kinsta.com\/nl\/blog\/devops-tools\/#devops-pipeline-cicd-tools\">CI\/CD<\/a>) onmisbare praktijken geworden om effici\u00ebnt software van hoge kwaliteit te leveren. Met CI\/CD kunnen developers het proces van bouwen, testen en deployen van codewijzigingen automatiseren, het risico op menselijke fouten verkleinen en snellere iteraties mogelijk maken.<\/p>\n<p>Dit artikel legt het belang uit van CI\/CD, hoe je een CI pipeline maakt, en hoe je continuous deployment in je CI pipeline met de <a href=\"https:\/\/kinsta.com\/nl\/docs\/kinsta-api\/\">Kinsta API<\/a> programmatisch kunt instellen &#8211; allemaal met GitHub Actions in je <a href=\"https:\/\/kinsta.com\/nl\/blog\/zo-push-je-code-naar-github\/\">GitHub<\/a> repository.<\/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>Waarom CI\/CD gebruiken?<\/h2>\n<p>Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applicatie Hosting<\/a> platform heeft altijd een optie geboden voor automatische deployment, die wordt geactiveerd zodra er een wijziging is op een specifieke branch op je gehoste Git repository. Dit is echter niet altijd ideaal voor grote projecten met meerdere teamleden. Veel <a href=\"https:\/\/kinsta.com\/nl\/blog\/soorten-developers\/\">developers<\/a> hebben de neiging om automatische deployment om verschillende redenen te vermijden.<\/p>\n<p>E\u00e9n reden is dat, in een samenwerkingsomgeving waar meerdere developers aan hetzelfde project werken, automatische deployments die worden geactiveerd door een wijziging van \u00e9\u00e9n developer aan het repository, kunnen leiden tot instabiliteit en onvoorziene problemen. Zonder goed testen en valideren kan zelfs een kleine codewijziging de live site verstoren, wat kan leiden tot downtime en negatieve gebruikerservaringen.<\/p>\n<p>Dit is waar een CI\/CD pipeline van pas kan komen. Door een zorgvuldig georkestreerde CI\/CD workflow te cre\u00ebren, kunnen developers ervoor zorgen dat codewijzigingen worden getest en gevalideerd voordat ze worden ingezet op de live site. Er zijn veel tools beschikbaar voor het implementeren van CI\/CD in softwareontwikkeling, we zullen <a href=\"https:\/\/docs.github.com\/en\/actions\/learn-github-actions\/understanding-github-actions\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Actions<\/a> gebruiken voor deze tutorial.<\/p>\n<h2>Wat is GitHub Actions?<\/h2>\n<p>GitHub Actions is een krachtige automatiseringstool van GitHub. Het biedt developers de mogelijkheid om verschillende jobs, processen en workflows binnen hun softwareontwikkelingsprojecten te automatiseren. Het integreert met GitHub repositories, waardoor het gemakkelijk te gebruiken is.<\/p>\n<p>Met GitHub Actions en de <a href=\"https:\/\/api-docs.kinsta.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Kinsta API<\/a> kun je aangepaste workflows defini\u00ebren die passen bij de eisen van je project. Je kunt een CI pipeline opzetten die je applicatie test en de deployment op Kinsta activeert.<\/p>\n<h2>Aan de slag met GitHub Actions<\/h2>\n<p>GitHub Actions werkt op het concept van workflows, dat zijn sets van geautomatiseerde jobs die worden geactiveerd door specifieke gebeurtenissen of gepland op regelmatige tijdstippen. Deze gebeurtenissen kunnen code pushes, pull requests, issue creatie en meer zijn. Als een van deze gebeurtenissen plaatsvindt, voert GitHub Actions automatisch een bijbehorende workflow uit, waarbij een reeks vooraf gedefinieerde stappen wordt uitgevoerd.<\/p>\n<p>Elke stap in de workflow vertegenwoordigt een bepaalde actie, zoals het bouwen van de code, het uitvoeren van tests, het implementeren of het versturen van meldingen. Laten we een workflow met drie jobs maken:<\/p>\n<ol start=\"1\">\n<li>Syntax controleren met ESLint<\/li>\n<li>Testen uitvoeren<\/li>\n<li>Je applicatie opnieuw deployen<\/li>\n<\/ol>\n<h3>Stap 1: Je GitHub repository instellen<\/h3>\n<p>Om aan de slag te gaan met GitHub Actions, heb je een GitHub repository nodig.<\/p>\n<p>Hier gebruiken we <a href=\"https:\/\/github.com\/kinsta\/chatgpt-clone\" target=\"_blank\" rel=\"noopener noreferrer\">deze GitHub repository<\/a>, ontwikkeld voor de tutorial <a href=\"https:\/\/kinsta.com\/nl\/blog\/chatgpt-kloon\/\">Zo bouw en deploy je een ChatGPT kloonapplicatie met React en OpenAI API<\/a>.<\/p>\n<p>Voel je vrij om de repository zelf te gebruiken door ernaar te navigeren op GitHub en te kiezen voor: <strong>Use this template<\/strong> &gt; <strong>Create a new repository<\/strong>.<\/p>\n<p>In deze React applicatie zijn unit tests gemaakt om elk onderdeel te testen. ESLint wordt ook gebruikt om een perfecte syntaxis en codeopmaak af te dwingen. De CI pipeline blokkeert een deployment als een pull request of samengevoegde code die naar de repository is gepusht niet voldoet aan de workflowtests.<\/p>\n<h3>Stap 2: Een workflowbestand maken<\/h3>\n<p>Definieer je workflow door een YAML bestand te maken in de <strong>.github\/workflows<\/strong> map van je repository. Deze map moet op het hoofdniveau van je archief staan. De naamgevingsconventie voor workflowbestanden is <strong>naam-van-de-workflow.yml<\/strong>.<\/p>\n<ol start=\"1\">\n<li>Maak in je archief een <strong>.github<\/strong> map aan.<\/li>\n<li>Maak in de <strong>.github<\/strong> map een nieuwe map genaamd <strong>workflows<\/strong>.<\/li>\n<li>Maak in de map workflows een nieuw bestand aan met een naam als <strong>build-test-deploy.yml<\/strong>.<\/li>\n<\/ol>\n<h3>Stap 3: De CI\/CD workflow schrijven<\/h3>\n<p>Nu je je workflowbestand hebt gemaakt, definieer je een workflow met de benodigde stappen om de syntax te controleren met ESLint, tests uit te voeren en de applicatie te deployen.<\/p>\n<h4>Cre\u00eber CI event<\/h4>\n<p>Bij het maken van een CI pipeline is de eerste stap het geven van een naam aan de workflow en vervolgens het instellen van het event die de workflow activeert. In dit voorbeeld zijn de twee events een pull request en een push naar de main branch.<\/p>\n<pre><code class=\"language-yaml\">name: Build, Test, and Deploy\n\non:\n  push:\n    branches: \"main\"\n  pull_request:\n    branches: \"main\"<\/code><\/pre>\n<p>Als je periodieke jobs (CRON jobs) wilt plannen voor specifieke jobs, dan kun je die toevoegen aan de workflow. Je zou bijvoorbeeld bepaalde jobs willen uitvoeren zoals database backups, gegevens opschonen of andere periodieke onderhoudsjobs.<\/p>\n<p>Hier is een voorbeeld van hoe je een CRON job aan de workflow kunt toevoegen:<\/p>\n<pre><code class=\"language-yaml\">on:\n  # Existing event triggers for push and pull_request\n\n  # Add a schedule for CRON jobs\n  schedule:\n    - cron: \"0 0 * * *\"<\/code><\/pre>\n<p>Het bovenstaande voorbeeld zal de workflow elke dag om middernacht (UTC-tijd) triggeren, omdat het cron-schema is ingesteld op <code>0 0 * * *<\/code>. Je kunt het cron-schema aanpassen aan je specifieke behoeften.<\/p>\n<p>Een ander voorbeeld: stel dat je de CI\/CD workflow wilt plannen om elke maandag om 8 uur &#8217;s ochtends te starten. We kunnen een CRON job instellen met behulp van het <code>schedule<\/code> event:<\/p>\n<pre><code class=\"language-yaml\">name: Build, Test, and Deploy\n\non:\n  push:\n    branches: \"main\"\n  pull_request:\n    branches: \"main\"\n\n  # Schedule the workflow to run every Monday at 8 a.m. (UTC time)\n  schedule:\n    - cron: \"0 8 * * 1\"\n\njobs:\n # Add jobs<\/code><\/pre>\n<p>De planning syntaxis die gebruikt wordt in het <code>schedule<\/code> event voor GitHub Actions workflows is gebaseerd op de UNIX cron syntaxis. Hiermee kun je specifieke tijden of intervallen defini\u00ebren waarop je workflow automatisch moet worden uitgevoerd. De syntaxis bestaat uit vijf velden die verschillende aspecten van de planning vertegenwoordigen. Elk veld wordt gescheiden door een spatie. Het algemene formaat van de schema syntaxis is als volgt:<\/p>\n<pre><code class=\"language-yaml\">* * * * *\n\u252c \u252c \u252c \u252c \u252c\n\u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2514\u2500 Day of the week (0 - 7) (Sunday to Saturday, where both 0 and 7 represent Sunday)\n\u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500 Month (1 - 12)\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500 Day of the month (1 - 31)\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Hour (0 - 23)\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Minute (0 - 59)<\/code><\/pre>\n<p>Laten we nu elk veld even langsgaan:<\/p>\n<ul>\n<li><strong>Minute (0 &#8211; 59):<\/strong> De minuut waarop de cron job zal triggeren. <code>15<\/code> betekent bijvoorbeeld dat de workflow op de 15e minuut van het uur wordt geactiveerd.<\/li>\n<li><strong>Hour (0 &#8211; 23):<\/strong> Het uur waarop de cron job zal triggeren. Bijvoorbeeld, <code>8<\/code> betekent dat de workflow om 8 uur &#8217;s ochtends wordt geactiveerd.<\/li>\n<li><strong>Day of the month (1 &#8211; 31):<\/strong> De dag van de maand waarop de cron job zal triggeren. Bijvoorbeeld, <code>1<\/code> betekent dat de workflow op de 1e dag van de maand wordt geactiveerd.<\/li>\n<li><strong>Month (1 &#8211; 12):<\/strong> De maand waarop de cron job zal triggeren. Bijvoorbeeld, <code>6<\/code> betekent dat de workflow in juni wordt geactiveerd.<\/li>\n<li><strong>Day of the week (0 &#8211; 7):<\/strong> De dag van de week waarop de cron job zal triggeren. Hier staan <code>0<\/code> en <code>7<\/code> allebei voor zondag, terwijl <code>1<\/code> staat voor maandag, enzovoort. <code>4<\/code> betekent bijvoorbeeld dat de workflow op donderdag wordt geactiveerd.<\/li>\n<\/ul>\n<p>Speciale tekens:<\/p>\n<ul>\n<li><code><strong>*<\/strong><\/code> (sterretje): Komt overeen met elke waarde voor dat veld. Bijvoorbeeld: <code>*<\/code> in het veld minuut betekent dat de workflow elke minuut wordt geactiveerd.<\/li>\n<li><code><strong>*\/n<\/strong><\/code> (schuine streep): Specificeert een interval. Bijvoorbeeld, <code>*\/5<\/code> in het minuutveld betekent dat de workflow elke 5 minuten wordt geactiveerd.<\/li>\n<li><code><strong>,<\/strong><\/code> (komma): Specificeert meerdere specifieke waarden. Bijvoorbeeld, <code>1,15,30<\/code> in het minutenveld betekent dat de workflow op de 1e, 15e en 30e minuut van het uur wordt geactiveerd.<\/li>\n<li><code><strong>-<\/strong><\/code> (koppelteken): Specificeert een reeks waarden. Bijvoorbeeld, <code>1-5<\/code> in het dag van de week veld betekent dat de workflow wordt geactiveerd van maandag tot vrijdag (1 tot 5).<\/li>\n<li><code><strong>?<\/strong><\/code> (vraagteken): Wordt gebruikt om geen specifieke waarde op te geven. Het wordt vaak gebruikt in het dag van de week veld wanneer de dag van de maand is opgegeven. Bijvoorbeeld, <code>?<\/code> in het dag van de week veld en <code>15<\/code> in het dag van de maand veld betekent dat de workflow zal starten op de 15e dag van de maand, ongeacht de dag van de week.<\/li>\n<\/ul>\n<h4>Maak een CI job om de syntax te controleren met ESLint<\/h4>\n<p>Om het CI proces op te zetten, maken we de nodige jobs of jobs aan. Elke job moet een duidelijke en begrijpelijke naam hebben. Laten we de eerste job <code>eslint<\/code> noemen, omdat deze betrekking heeft op het controleren van de code syntax met ESLint.<\/p>\n<p>Daarnaast kunnen we een menselijk leesbare beschrijving geven, hoewel dit deel optioneel is. Vervolgens geven we aan dat de job moet draaien op een Ubuntu omgeving en gebruiken we een matrix strategie om de code te testen tegen twee <a href=\"https:\/\/kinsta.com\/nl\/onderwerpen\/node-js\/\">Node.js<\/a> versies: <code>18.x<\/code> en <code>20.x<\/code>.<\/p>\n<pre><code class=\"language-yaml\">jobs:\n  eslint:\n    name: Check Syntax with ESLint\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [18.x, 20.x]<\/code><\/pre>\n<p>Vervolgens defini\u00ebren we de stappen die de &#8220;ESLint&#8221; job zal uitvoeren. Deze stappen zijn het uitchecken van de code, het instellen van de opgegeven Node.js versie om ESLint uit te voeren, het cachen van npm pakketten, het installeren van dependencies van het project en tenslotte het uitvoeren van ESLint om de syntax van de code te controleren.<\/p>\n<pre><code class=\"language-yaml\">    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v3\n\n      - name: Use Node.js ${{ matrix.node-version }} to Check Lint\n        uses: actions\/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: 'npm'\n\n      - name: Install Dependencies\n        run: npm ci\n\n      - name: Run ESLint\n        run: npm run lint<\/code><\/pre>\n<p>In de workflow hierboven krijgt elke stap een beschrijving met een naam om het makkelijk te maken om de bron van fouten of bugs te identificeren bij het inspecteren van de workflow vanuit GitHub Actions. Met name in de derde stap gebruiken we het <code>npm ci<\/code> commando om dependencies te installeren, wat de voorkeur heeft boven <code>npm install<\/code> omdat het een schone installatie uitvoert. Bovendien gaat de laatste stap, het uitvoeren van ESLint met <code>npm run lint<\/code>, ervan uit dat je dit commando hebt geconfigureerd in je <strong>package.json<\/strong> bestand.<\/p>\n<p>Hieronder staat de volledige opdracht voor het controleren van de syntaxis van code met ESLint:<\/p>\n<pre><code class=\"language-yaml\">jobs:\n  eslint:\n    name: Check Syntax with ESLint\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [18.x, 20.x]\n\n    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v3\n\n      - name: Use Node.js ${{ matrix.node-version }} to Check Lint\n        uses: actions\/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: 'npm'\n\n      - name: Install Dependencies\n        run: npm ci\n\n      - name: Run ESLint\n        run: npm run lint<\/code><\/pre>\n<h4>Maak een CI job aan om tests uit te voeren<\/h4>\n<p>Om de CI job toe te voegen om testen uit te voeren, begin je met het defini\u00ebren van de job en het geven van een beschrijvende naam, zoals <code>tests<\/code>. We geven ook aan dat deze job afhankelijk is van de job <code>eslint<\/code>, wat betekent dat de job <code>eslint<\/code> eerst wordt uitgevoerd voordat de job <code>tests<\/code> wordt uitgevoerd. Deze afhankelijkheid zorgt ervoor dat de code wordt gecontroleerd op syntaxfouten voordat de tests worden uitgevoerd.<\/p>\n<pre><code class=\"language-yaml\">  tests:\n    name: Run Tests\n    needs: eslint\n    runs-on: ubuntu-latest<\/code><\/pre>\n<p>Definieer vervolgens de stappen voor de job <code>tests<\/code>. Net als bij de vorige opdracht controleren we de code, stellen we Node.js versie <code>18.x<\/code> in om de tests uit te voeren, installeren we project-dependencies met <code>npm ci<\/code> en voeren we de tests uit met het commando <code>npm run test<\/code>.<\/p>\n<pre><code class=\"language-yaml\">    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v3\n\n      - name: Use Node.js 18.x to run Test\n        uses: actions\/setup-node@v3\n        with:\n          node-version: 18.x\n          cache: 'npm'\n\n      - name: Install Dependencies\n        run: npm ci\n\n      - name: Run Tests\n        run: npm run test<\/code><\/pre>\n<h4>Maak CI job aan om te deployen met Kinsta API<\/h4>\n<p>Om de CI job te maken om uit te rollen naar Kinsta met behulp van de Kinsta API, defini\u00ebren we de job en geven hem de naam <code>deploy<\/code>. Deze job zal afhankelijk zijn van de jobs <code>eslint<\/code> en <code>tests<\/code> om ervoor te zorgen dat de deployment pas wordt uitgevoerd nadat de code is gecontroleerd op syntaxfouten en door de tests is gekomen. We stellen de job in om te draaien op een <a href=\"https:\/\/kinsta.com\/blog\/check-ubuntu-version\/\">Ubuntu omgeving<\/a> met de laatste beschikbare versie.<\/p>\n<pre><code class=\"language-yaml\">  deploy:\n    name: Re-Deploy Application\n    needs: [eslint, tests]\n    runs-on: ubuntu-latest<\/code><\/pre>\n<p>Definieer vervolgens de stappen. In dit geval zul je een cURL commando uitvoeren om programmatisch te communiceren met de Kinsta API en een re-deployment te starten. Laten we eerst de Kinsta API begrijpen, de verschillende informatie die nodig is voor interactie met de <a href=\"https:\/\/kinsta.com\/blog\/api-endpoint\/\">API<\/a>, en hoe je belangrijke informatie die geassocieerd is met de API &#8211; zoals de <a href=\"https:\/\/kinsta.com\/nl\/blog\/kinsta-api-sleutel\/\">API sleutel<\/a> &#8211; veilig op GitHub kunt krijgen\/opslaan.<\/p>\n<h2>De Kinsta API begrijpen<\/h2>\n<p>De <a href=\"https:\/\/kinsta.com\/nl\/changelog\/kinsta-api\/\">Kinsta API<\/a> is een krachtige tool waarmee je programmatisch kunt communiceren met de diensten van Kinsta. Om de API te gebruiken, moet je een account hebben met ten minste \u00e9\u00e9n WordPress site, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">toepassing<\/a> of <a href=\"https:\/\/sevalla.com\/database-hosting\/\">database<\/a> in MyKinsta. Je moet ook een API-sleutel genereren om je te authenticeren en toegang te krijgen tot je account via de API.<\/p>\n<p>Om een API-sleutel te genereren:<\/p>\n<ol start=\"1\">\n<li>Ga naar je MyKinsta dashboard.<\/li>\n<li>Navigeer naar de pagina <strong>API sleutels <\/strong>(<strong>Je naam<\/strong> &gt; <strong>Bedrijfsinstellingen<\/strong> &gt; <strong>API sleutels<\/strong>).<\/li>\n<li>Klik op <strong>API sleutel aanmaken<\/strong>.<\/li>\n<li>Kies een vervaldatum of stel een aangepaste begindatum in en het aantal uren dat de sleutel moet verlopen.<\/li>\n<li>Geef de sleutel een unieke naam.<\/li>\n<li>Klik op <strong>Genereren<\/strong>.<\/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\/create-api-key-on-mykinsta.jpg\" alt=\"API sleutel aanmaken op MyKinsta.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">API sleutel aanmaken op MyKinsta.<\/figcaption><\/figure>\n<p>Nadat je een API-sleutel hebt gemaakt, moet je deze kopi\u00ebren en ergens veilig opslaan (we raden aan een <a href=\"https:\/\/kinsta.com\/nl\/blog\/wachtwoordmanagers\/\">wachtwoordmanager<\/a> te gebruiken), omdat dit de <strong>enige keer<\/strong> is dat de sleutel wordt getoond binnen Kinsta.<\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<h3 class=\"p-rich_text_section\">Zo trigger je deployments met Kinsta API<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"c-message_kit__reaction_bar c-reaction_bar c-reaction_bar--light c-reaction_bar--collapsed\" role=\"group\" data-qa=\"reaction_bar\" aria-label=\"Reactions\" data-stringify-ignore=\"true\"><\/div>\n<p>Om een applicatie te deployen naar Kinsta met behulp van de API, heb je twee vereiste parameters nodig: de applicatie-ID en de branch. Je kunt de applicatie ID programmatisch ophalen door eerst de lijst met applicaties op te halen, die details geeft over elke applicatie, inclusief de applicatie ID.<\/p>\n<p>Nadat je de benodigde informatie hebt verkregen, kun je een <a href=\"https:\/\/kinsta.com\/nl\/blog\/javascript-http-verzoek\/\">POST verzoek<\/a> doen naar het API <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">\/applications\/deployments<\/a> endpoint. Voor de CI pipeline gebruiken we cURL, een opdrachtregelprogramma voor interactie met URL&#8217;s.<\/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<h2>Deployment triggeren met cURL in CI\/CD pipeline<\/h2>\n<p>Om de deployment te triggeren met de Kinsta API, voeg je het cURL commando toe aan het <code>run<\/code> commando voor je CI pipeline. Het is echter belangrijk om je API sleutel en applicatie ID veilig op te slaan.<\/p>\n<p>Om <a href=\"https:\/\/kinsta.com\/nl\/blog\/github-actions-secret\/\">secrets op GitHub op te slaan<\/a> en ze in GitHub Actions te gebruiken, volg je deze stappen:<\/p>\n<ol start=\"1\">\n<li>Navigeer naar de repository waar je het secret wilt instellen.<\/li>\n<li>Klik op de <b>Settings <\/b>tab in het menu van de repository.<\/li>\n<li>Selecteer in de linker zijbalk <b>Secrets <\/b>in de categorie <strong>Options<\/strong>.<\/li>\n<li>Klik op <strong>New repository secret<\/strong>.<\/li>\n<li>Geef een naam op voor je secret (zoals <code>KINSTA_API_KEY<\/code>) en voer je Kinsta API sleutel in het veld <b>Value <\/b>in.<\/li>\n<li>Klik na het invoeren van de naam en waarde op de knop <strong>Add secret <\/strong>om het op te slaan.<\/li>\n<li>Herhaal het proces voor andere secrets.<\/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\/storing-secrets-on-github.jpg\" alt=\"Sla secrets op in GitHub.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Sla secrets op in GitHub.<\/figcaption><\/figure>\n<p>Zodra je de secrets hebt toegevoegd, kun je ze in je GitHub Actions workflow gebruiken met de <code>${{ secrets.SECRET_NAME }}<\/code> syntax.<\/p>\n<p>Laten we nu de <code>deploy<\/code> job voor je GitHub Actions CI\/CD pipeline afmaken. Definieer de stappen net als eerder, met een enkele stap om te deployen naar Kinsta. Definieer eerst de secrets in het <code>env<\/code> commando en voeg dan het cURL commando toe om de deployment uit te voeren.<\/p>\n<pre><code class=\"language-yaml\">    steps:\n      - name: Deploy to Kinsta\n        env:\n          KINSTA_API_KEY: ${{ secrets.KINSTA_API_KEY }}\n          APP_ID: ${{ secrets.APP_ID }}\n        run: |\n          curl -i -X POST \n            https:\/\/api.kinsta.com\/v2\/applications\/deployments \n            -H \"Authorization: Bearer $KINSTA_API_KEY\" \n            -H \"Content-Type: application\/json\" \n            -d '{\n              \"app_id\": \"'\"$APP_ID\"'\",\n              \"branch\": \"main\"\n            }'<\/code><\/pre>\n<p>In het cURL commando zul je zien dat de omgevingsvariabelen zijn toegevoegd in het commando, waardoor de secrets veilig toegankelijk zijn tijdens het deployment proces.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Deze <code>deploy<\/code> CI job is ontworpen om het deploymentproces uit te voeren met behulp van de Kinsta API. Het zal een succesvolle status weergeven, zelfs als het daadwerkelijke deploymentproces problemen of mislukkingen tegenkomt. Dit komt omdat de respons van de workflow gebaseerd is op het succesvol starten van de deployment, niet op de voltooiing of status ervan.<\/p>\n<\/aside>\n\n<p>Zo ziet je uiteindelijke CI\/CD workflow eruit:<\/p>\n<pre><code class=\"language-yaml\">name: Build, Test, and Deploy\n\non:\n  push:\n    branches: \"main\"\n  pull_request:\n    branches: \"main\"\n\njobs:\n  eslint:\n    name: Check Syntax with ESLint\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [18.x, 20.x]\n\n    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v3\n        \n      - name: Use Node.js ${{ matrix.node-version }} to Check Lint\n        uses: actions\/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: 'npm'\n          \n      - name: Install Dependencies\n        run: npm ci\n        \n      - name: Run ESLint\n        run: npm run lint\n\n  tests:\n    name: Run Tests\n    needs: eslint\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v3\n        \n      - name: Use Node.js 18.x to run Test\n        uses: actions\/setup-node@v3\n        with:\n          node-version: 18.x\n          cache: 'npm'\n          \n      - name: Install Dependencies\n        run: npm ci\n        \n      - name: Run Tests\n        run: npm run test\n\n  deploy:\n    name: Re-Deploy Application\n    needs: [eslint, tests]\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Deploy to Kinsta\n        env:\n          KINSTA_API_KEY: ${{ secrets.KINSTA_API_KEY }}\n          APP_ID: ${{ secrets.APP_ID }}\n        run: |\n          curl -i -X POST \n            https:\/\/api.kinsta.com\/v2\/applications\/deployments \n            -H \"Authorization: Bearer $KINSTA_API_KEY\" \n            -H \"Content-Type: application\/json\" \n            -d '{\n              \"app_id\": \"'\"$APP_ID\"'\",\n              \"branch\": \"main\"\n            }'<\/code><\/pre>\n<p>Kopieer de gegeven workflow en plak deze in je <strong>build-test-deploy.yml<\/strong> bestand. Initieer vervolgens een pull request om dit bestand toe te voegen aan de main branch van je repository. Onthoud dat dit pull request automatisch de workflow zal triggeren.<\/p>\n<p>Dit stelt je in staat om wijzigingen in je repository te bekijken en ervoor te zorgen dat elke nieuwe wijziging in het pull request voldoet aan de gespecificeerde controles voordat je beslist of je het merget in je codebase.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/storing-secrets-on-github.jpg\" alt=\"Secrets opslaan in GitHub.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Secrets opslaan in GitHub.<\/figcaption><\/figure>\n<p>Als je het pull request samenvoegt. Navigeer naar het tabblad <strong>Actions <\/strong>van je GitHub repository en dan zie je de CI\/CD workflow lopen.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/github-actions-summary.jpg\" alt=\"Overzicht GitHub Actions.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Overzicht GitHub Actions.<\/figcaption><\/figure>\n<p>Je kunt op elke job klikken om meer details over de job te zien (dit is waarom je elke stap van je job een betekenisvolle beschrijving moet geven).<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/ci-steps-details.jpg\" alt=\"Details CI stappen.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Details CI stappen.<\/figcaption><\/figure>\n<h2>Pull request workflow afdwingen op GitHub<\/h2>\n<p>Om effectief codebeheer en samenwerking in GitHub repositories te garanderen, is het handig om een pull request workflow af te dwingen en directe commits naar de main branch te blokkeren. Deze aanpak zorgt voor een gecontroleerd en georganiseerd ontwikkelproces, waarbij alle wijzigingen pull requests en reviews moeten ondergaan voordat ze worden gemerged in de main branch.<\/p>\n<p>Door deze werkwijze toe te passen kunnen devteams de kwaliteit van de code verbeteren, het risico op het introduceren van bugs minimaliseren en een transparante geschiedenis van wijzigingen bijhouden.<\/p>\n<p>Hier lees je hoe je afdwingingen van de pull request workflow instelt:<\/p>\n<ol start=\"1\">\n<li>Klik op de <b>Settings <\/b>tab in je GitHub repository.<\/li>\n<li>Onder <strong>Code and automation<\/strong>, selecteer <strong>Branches<\/strong> uit de zijbalk opties.<\/li>\n<li>Als er geen regels bestaan, klik dan op <strong>Add rules for branch security<\/strong>.<\/li>\n<li>Geef een naam op voor de regel, vink dan het vakje aan <strong>Require a pull request before merging<\/strong>. Dit toont meer opties voor configuratie.<\/li>\n<li>Vink ook het vakje aan voor <strong>Require status checks to pass before merging<\/strong>.<\/li>\n<li>Pas extra opties aan op basis van je voorkeuren en vereisten.<\/li>\n<li>Klik op de knop <b>Create <\/b>om de regel op te slaan.<\/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\/enforcing-pull-request-workflow-on-github.jpg\" alt=\"Afdwingen van de pull request workflow op GitHub.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Afdwingen van de pull request workflow op GitHub.<\/figcaption><\/figure>\n<p>Door deze stappen te volgen, heb je met succes een regel ingesteld om de pull request workflow in je GitHub repository af te dwingen. Dit zorgt ervoor dat alle wijzigingen worden onderworpen aan beoordeling en geautomatiseerde controles voordat ze worden gemerged in de main branch, wat een meer betrouwbare en samenwerkende ontwikkelomgeving bevordert.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Door de kracht van GitHub Actions en de Kinsta API te combineren, kun je je ontwikkelworkflow stroomlijnen en een collaboratieve en effici\u00ebnte omgeving voor je ontwikkelteam bevorderen.<\/p>\n<p>Developers kunnen vol vertrouwen code bijdragen, wetende dat het grondig getest zal worden voordat het de productie bereikt, en belanghebbenden kunnen met een gerust hart weten dat het deploymentproces goed gecontroleerd en foutbestendig is.<\/p>\n<p><em>Hoe gebruik jij de Kinsta API? Welke endpoints zou je graag toegevoegd zien aan de API? Welke Kinsta API gerelateerde tutorial zou je als volgende willen lezen?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In de snelle wereld van webdevelopment zijn continuous integration en continuous deployment (CI\/CD) onmisbare praktijken geworden om effici\u00ebnt software van hoge kwaliteit te leveren. Met CI\/CD &#8230;<\/p>\n","protected":false},"author":287,"featured_media":55130,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[911,912],"class_list":["post-55129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-git"],"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>Een CI\/CD pipeline maken met GitHub Actions &amp; Kinsta API<\/title>\n<meta name=\"description\" content=\"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.\" \/>\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\/nl\/blog\/ci-cd-pipeline-maken\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API\" \/>\n<meta property=\"og:description\" content=\"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T13:11:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-30T08:32:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png\" \/>\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\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API\",\"datePublished\":\"2023-08-21T13:11:12+00:00\",\"dateModified\":\"2023-08-30T08:32:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\"},\"wordCount\":2819,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\",\"name\":\"Een CI\/CD pipeline maken met GitHub Actions & Kinsta API\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png\",\"datePublished\":\"2023-08-21T13:11:12+00:00\",\"dateModified\":\"2023-08-30T08:32:59+00:00\",\"description\":\"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Een CI\/CD pipeline maken met GitHub Actions & Kinsta API","description":"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.","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\/nl\/blog\/ci-cd-pipeline-maken\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API","og_description":"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.","og_url":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-08-21T13:11:12+00:00","article_modified_time":"2023-08-30T08:32:59+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Joel Olawanle","Geschatte leestijd":"16 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API","datePublished":"2023-08-21T13:11:12+00:00","dateModified":"2023-08-30T08:32:59+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/"},"wordCount":2819,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/","url":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/","name":"Een CI\/CD pipeline maken met GitHub Actions & Kinsta API","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png","datePublished":"2023-08-21T13:11:12+00:00","dateModified":"2023-08-30T08:32:59+00:00","description":"Leer hoe je effici\u00ebnt een krachtige CI\/CD pipeline opzet met GitHub Actions en het volledige potentieel van de Kinsta API benut.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/cd-pipeline-with-github-actions-and-kinsta-api.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/api\/"},{"@type":"ListItem","position":3,"name":"Zo maak je een CI\/CD pipeline met GitHub Actions en Kinsta API"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=55129"}],"version-history":[{"count":10,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55129\/revisions"}],"predecessor-version":[{"id":55243,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55129\/revisions\/55243"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/translations\/nl"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55129\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/55130"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=55129"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=55129"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=55129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}