Stel deze workflow in om uw app automatisch in productie te nemen en uw releaseproces te stroomlijnen.

Netlify is een webhostingplatform en een uitgebreide reeks tools voor het implementeren en beheren van webapplicaties in de cloud.

Maar de functies gaan veel verder: dankzij de serverloze functies kunt u server-side code uitvoeren zonder een speciale server.

Ontdek hoe u een CI/CD-pijplijn instelt om een ​​Node.js REST API op Netlify te implementeren met behulp van GitHub Actions.

CI/CD-pijplijnen met GitHub-acties: een overzicht

Continuous Integration en Continuous Delivery (CI/CD)-pijplijnen zijn een reeks sequentiële, geautomatiseerde processen die softwaretoepassingen ondergaan voordat ze naar productie worden verzonden.

CI/CD-pijplijnen bestaan ​​doorgaans uit verschillende belangrijke fasen, waaronder de bron-, bouw-, test- en implementatiefasen.

Hoewel het mogelijk is om deze fasen handmatig uit te voeren, biedt automatisering verschillende voordelen, waaronder:

  • Het minimaliseren van het risico op menselijke fouten.
  • instagram viewer
  • Het releaseproces versnellen.
  • Zorgen voor een consistente workflow voor het verzenden van kwaliteitssoftware naar productie.

Wat zijn GitHub-acties?

GitHub Actions is een tool die is geïntegreerd in GitHub en die een breed scala aan vooraf gebouwde acties biedt die u kunt gebruiken om workflows-als-code rechtstreeks in uw projectrepository te definiëren om de CI/CD te automatiseren pijpleidingen.

U kunt ook aangepaste acties maken die passen bij uw specifieke projectbehoeften, zodat u probleemloos applicaties kunt bouwen en implementeren voor productie. Een van de voordelen van GitHub Actions is de naadloze integratie met andere GitHub-functies, zoals pull-aanvragen en het volgen van problemen.

Dit maakt het mogelijk om workflows te activeren op basis van specifieke gebeurtenissen, zoals een nieuwe commit, zodat uw CI/CD-pijplijnen automatisch worden geactiveerd wanneer dat nodig is.

Stel het Node.js-project in

Om te beginnen, moet je creëren een Express-webserver. Maak hiervoor lokaal een nieuwe map aan en wijzig de map op uw terminal.

mkdir express-netlify
cd express-netlify

Maak vervolgens een pakket.json bestand gebruiken npm, de Node Package Manager.

npm begin -y

Installeer ten slotte de vereiste afhankelijkheden in het project.

npm install express netlify-lambda serverloos-http

De netlify-lambda pakket dient als een lokale ontwikkelingsserver die het testen van serverloze functies vergemakkelijkt. serverloos-http helpt bij het aanpassen van Express.js-apps aan een indeling die compatibel is met serverloze functiehandlers.

Netlify biedt geen native ondersteuning voor het hosten en uitvoeren van volwaardige backend-applicaties. In plaats daarvan biedt het serverloze functies als alternatieve oplossing voor het afhandelen van backend-functionaliteit.

Deze functies beheren server-side logica, verwerken HTTP API-verzoeken en dienen dynamische inhoud, waardoor backend-achtige functionaliteit wordt geboden binnen het serverloze paradigma.

U kunt de code van dit project vinden in de bijbehorende GitHub-opslagplaats.

Maak de Express-webserver

Maak drie mappen: afstand, functies, En src in de hoofdmap van uw projectmap.

Voordat u de Express-server instelt, maakt u een blanco index.html bestand in de afstand map. Dit bestand fungeert als tijdelijke aanduiding waarmee Netlify de Express-applicatie met succes kan implementeren en de API-routes kan bedienen.

Maak nu een src/app.js bestand en voeg de volgende code toe:

const uitdrukken = vereisen("nadrukkelijk");
const serverloos = vereisen("serverloze-http");

const app = uitdrukken();
const router = expres. Router();

router.get("/", (req, res) => {
opnieuw verzenden("Hallo Wereld!")
});

app.gebruik(`/.netlify/functions/app`, router);

moduul.export = app;
moduul.exports.handler = serverloos (app);

Deze code definieert een Express-server met een enkele route voor de root-URL die GET-verzoeken afhandelt. De app.gebruik functie registreert de middleware van de route bij de Express-toepassing en zorgt ervoor dat alle HTTP-verzoeken die naar het pad worden gedaan /.netlify/functions/app goed worden afgehandeld door de router, zelfs in een productieomgeving.

Bijgevolg, als u een nieuw eindpunt toevoegt, zoals /api/auth, het zal toegankelijk zijn op /.netlify/functions/app/api/auth. Ten slotte exporteert de code de Express-toepassing en de serverloze handlerfunctie.

Dit maakt het mogelijk om de server lokaal te testen en ervoor te zorgen dat u deze als een serverloze functie op Netlify kunt inzetten.

Definieer het Netlify.toml-bestand

Maak in de hoofdmap een nieuw Netlify.toml bestand en voeg de volgende code toe.

[bouwen]
basis = "/"
commando = "npm run build"
publiceren = "/dist/"
functies = "functies/"
[bouwomgeving]
NODE_VERSION = "16"
[functies]
externe_node_modules = ["nadrukkelijk"]
node_bundler = "esbuild"
[[omleidingen]]
kracht = waar
van = "/api/*"
toestand = 200
to = "/.netlify/functions/app/:splat"
[[omleidingen]]
van = "/*"
toestand = 200
naar = "/index.html"

De code specificeert de build- en implementatieconfiguratie-instellingen voor de Express-app op Netlify. Het bevat instellingen zoals de basismap, de build-opdracht, de publicatiemap en de functiemap.

Bovendien definieert het omleidingsinstellingen die de routering van HTTP API-verzoeken moeten beheren, zodat ze correct worden doorgestuurd naar de Netlify serverloze functies.

Werk het bestand Package.json bij

Open de pakket.json bestand en voeg deze commando's toe aan het scripts-object.

"scripts": {
"begin": "netlify-lambda serveren src",
"bouwen": "netlify-lambda build src"
},

Voer de volgende opdrachten uit om de toepassing lokaal te bouwen en te starten.

npm run bouwen
npm-run start

De server start op poort 9000. U kunt doorgaan en de API testen met Postman door verzoeken te doen aan http://localhost: 9000/.netlify/functies/app

Tot slot, voordat u de GitHub Actions-workflow instelt om implementaties op Netlify te automatiseren, maak een repository op GitHuben push de projectbestanden.

Implementeer de Express-applicatie op Netlify

Implementeer eerst de API op Netlify voordat u de GitHub Actions-workflow configureert. Volg deze stappen om de Express-app op Netlify te implementeren.

  1. Ga naar Netlificeren en maak een account aan en log in op de Overzicht bladzijde.
  2. Selecteer en klik op de Sites tabblad.
  3. Klik op de Importeren vanuit Git knop en selecteer GitHub als het Git-providerplatform. Netlify zal je vragen om te authenticeren met GitHub om het toegang te verlenen tot je account en de projectrepository's.
  4. Selecteer de Express-projectrepository in de lijst met weergegeven repositories.
  5. Nadat u de repository hebt geselecteerd, moet u de build-instellingen voor het implementatieproces configureren. Netlify vereenvoudigt dit proces door automatisch de technologie te detecteren die is gebruikt om de applicatie te bouwen en de velden vooraf in te vullen met de vereiste build-instellingen. In dit geval de opdracht build, de publish en de directory functions.
  6. Klik ten slotte op de Site implementeren knop om het proces te voltooien.

Maak een GitHub Actions-workflow

Klik op de Acties tabblad in de GitHub-repository van uw project. In de Continue integratie sectie, selecteer en klik op Node.js configureren werkstroom.

Hernoem vanuit de GitHub-editor de bestandsnaam naar Netlify.yml, verwijder de boilerplate Node.js-workflowcode en voeg de onderstaande code toe:

naam:BouwenEnAanwendennaarNetlificeren
op:
duw:
pull_request:
banen:
bouwen:
draait op:ubuntu-22.04
stappen:
-toepassingen:acties/afrekenen@v3

# ( Bouwen naar ./dist of andere directory... )

-naam:AanwendennaarNetlificeren
toepassingen:nwtgck/[email protected]
met:
publicatie-dir:'./afst'
productietak:voornaamst
github-token:${{geheimen. GITHUB_TOKEN}}
implementatie-bericht:"Inzetten vanuit GitHub-acties"
inschakelen-pull-verzoek-commentaar:vals
inschakelen-commit-commentaar:WAAR
overschrijft-pull-verzoek-commentaar:WAAR
env:
NETLIFY_AUTH_TOKEN:${{geheimen. NETLIFY_AUTH_TOKEN}}
NETLIFY_SITE_ID:${{geheimen. NETLIFY_SITE_ID}}
timeout-minuten:1

Hier volgt een overzicht van de workflow-eigenschappen:

  • op: Gebeurtenissen die de acties in deze workflow activeren.
  • banen: Specificeert de gebeurtenis die een bepaalde actie moet uitvoeren, namelijk: de build- en deploy-gebeurtenissen.
  • draait op: de gastproductieomgeving voor de actie.
  • stappen: Specificeert een reeks stappen die nodig zijn om een ​​bepaalde taak uit te voeren.
  • met: definieert de argumenten die nodig zijn om de acties correct uit te voeren.
  • env: specificeert de vereiste omgevingsvariabelen voor de werkstroom.

Leg ten slotte de updates vast die in dit bestand zijn aangebracht. GitHub zou de workflow automatisch moeten activeren.

De initiële build veroorzaakt echter een fout omdat u geheime variabelen moet toevoegen die vereist zijn door de workflow: de geïmplementeerde site-ID en het authenticatietoken van Netlify. Ga naar je Site-instellingen op Netlify en kopieer het Website ID.

Om het authentificatietoken te krijgen, klikt u op de gebruikersprofiel pictogram en selecteer het Gebruikersinstellingen optie in het vervolgkeuzevenster. Selecteer op de instellingenpagina toepassingenen klik Nieuw toegangstoken om uw authentificatietoken te genereren.

Voeg de twee omgevingsvariabelen als NETLIFY_SITE_ID en NETLIFY_AUTH_TOKEN toe aan zowel de omgevingsvariabelen als de secties met repositorygeheimen in uw GitHub-repository. Nadat u deze wijzigingen hebt aangebracht, voert u de werkstroom opnieuw uit. Netlify implementeert automatisch alle volgende wijzigingen die u pusht met behulp van deze pijplijn.

Ga je gang en test de API met behulp van Postman door verzoeken in te dienen bij deze URL: /.netlify/functions/app.

CI/CD-pijplijnen configureren met GitHub Actions en Netlify

Door de serverloze functies van Netlify te gebruiken, kunt u volwaardige webapplicaties implementeren die zowel client-side als backend-functionaliteit op Netlify omvatten.

Daarnaast biedt het opzetten van CI/CD-pijplijnen voor applicaties met GitHub Actions een gestroomlijnde aanpak voor het automatiseren van het bouw- en implementatieproces. Dit stelt u in staat om workflows te definiëren die zorgen voor een naadloos en betrouwbaar ontwikkelingsproces, vanaf de ideevorming tot en met de releasefase.