Konfigurer denne arbeidsflyten for automatisk å distribuere appen din til produksjon og strømlinjeforme utgivelsesprosessen.
Netlify er en webhotellplattform og en omfattende pakke med verktøy for å distribuere og administrere nettapplikasjoner i skyen.
Men funksjonene strekker seg langt utover dette – dens serverløse funksjoner lar deg kjøre kode på serversiden uten en dedikert server.
Utforsk hvordan du setter opp en CI/CD-pipeline for å distribuere en Node.js REST API på Netlify ved hjelp av GitHub Actions.
CI/CD-rørledninger med GitHub-handlinger: en oversikt
Continuous Integration and Continuous Delivery (CI/CD) pipelines er en serie sekvensielle, automatiserte prosesser som programvareapplikasjoner gjennomgår før de sendes til produksjon.
Vanligvis består CI/CD-rørledninger av flere nøkkelfaser, inkludert kilde-, bygge-, test- og distribusjonsfasene.
Selv om det er mulig å utføre disse fasene manuelt, gir automatisering av dem flere fordeler, inkludert:
- Minimere risikoen for menneskelige feil.
- Fremskynder utgivelsesprosessen.
- Sikre en konsistent arbeidsflyt for levering av kvalitetsprogramvare til produksjon.
Hva er GitHub-handlinger?
GitHub Actions er et verktøy integrert i GitHub som gir et bredt spekter av forhåndsbygde handlinger som du kan bruke til å definere arbeidsflyter-som-kode direkte i prosjektlageret ditt for å automatisere CI/CD rørledninger.
Du kan også lage tilpassede handlinger for å passe dine spesifikke prosjektbehov, slik at du kan bygge og distribuere applikasjoner til produksjon problemfritt. En av fordelene med GitHub Actions er den sømløse integrasjonen med andre GitHub-funksjoner, for eksempel pull-forespørsler og problemsporing.
Dette gjør det mulig å utløse arbeidsflyter basert på spesifikke hendelser, for eksempel en ny commit som sikrer at CI/CD-pipelines automatisk utløses når det er nødvendig.
Sett opp Node.js-prosjektet
For å komme i gang må du opprette en Express-webserver. For å gjøre det, opprette en ny mappe lokalt og endre katalogen på terminalen.
mkdir express-netlify
cd express-netify
Deretter oppretter du en package.json fil ved hjelp av npm, Node Package Manager.
npm init -y
Til slutt, installer avhengighetene som kreves i prosjektet.
npm installer express netlify-lambda serverless-http
De netify-lambda pakken fungerer som en lokal utviklingsserver som forenkler testing av serverløse funksjoner. serverløs-http hjelper med å tilpasse Express.js-apper til et format som er kompatibelt med serverløse funksjonsbehandlere.
Netlify gir ikke innebygd støtte for å være vert for og kjøre fullverdige backend-applikasjoner. I stedet tilbyr den serverløse funksjoner som en alternativ løsning for håndtering av backend-funksjonalitet.
Disse funksjonene administrerer logikk på serversiden, håndterer HTTP API-forespørsler og serverer dynamisk innhold, og gir backend-lignende funksjonalitet innenfor det serverløse paradigmet.
Du kan finne dette prosjektets kode i sin GitHub-depot.
Opprett Express Web Server
Lag tre mapper: dist, funksjoner, og src i rotkatalogen til prosjektmappen din.
Før du setter opp Express-serveren, må du opprette en tom index.html fil i dist mappe. Denne filen fungerer som en plassholder som gjør at Netlify kan distribuere Express-applikasjonen og betjene API-rutene.
Lag nå en src/app.js fil og legg til følgende kode:
konst uttrykke = krever("uttrykke");
konst serverløs = krever("serverløs-http");konst app = express();
konst ruter = ekspress. Ruter();router.get("/", (req, res) => {
res.send("Hei Verden!")
});app.bruk(`/.netlify/functions/app`, ruter);
modul.exports = app;
modul.exports.handler = serverløs (app);
Denne koden definerer en Express-server med en enkelt rute for rot-URLen som håndterer GET-forespørsler. De app.bruk funksjonen registrerer rutens mellomvare med Express-applikasjonen, og sikrer at alle HTTP-forespørsler til banen
Følgelig, Hvis du legger til et nytt endepunkt som f.eks /api/auth, vil den være tilgjengelig på
Dette gir mulighet for lokal testing av serveren og sikrer at du kan distribuere den som en serverløs funksjon på Netlify.
Definer Netlify.toml-filen
Opprett en ny i rotkatalogen Netify.toml fil, og legg til følgende kode.
[bygge]
base = "/"
kommando = "npm kjør build"
publisere = "/dist/"
funksjoner = "funksjoner/"
[build.environment]
NODE_VERSION = "16"
[funksjoner]
eksterne_node_moduler = ["uttrykke"]
node_bundler = "esbuild"
[[viderekoblinger]]
kraft = sann
fra = "/api/*"
status = 200
to = "/.netlify/functions/app/:splat"
[[viderekoblinger]]
fra = "/*"
status = 200
til = "/indeks.html"
Koden spesifiserer bygge- og distribusjonskonfigurasjonsinnstillingene for Express-appen på Netlify. Den inkluderer innstillinger som basiskatalogen, byggkommandoen, publiseringskatalogen og funksjonskatalogen.
I tillegg definerer den omdirigeringsinnstillinger som skal administrere rutingen av HTTP API-forespørsler, og sikre at de rettes riktig til Netlify-serverløse funksjoner.
Oppdater Package.json-filen
Åpne package.json fil og legg til disse kommandoene i skriptobjektet.
"skript": {
"start": "netlify-lambda server src",
"bygge": "netlify-lambda bygge src"
},
Kjør følgende kommandoer for å bygge og starte applikasjonen lokalt.
npm kjøre bygge
npm kjøre start
Serveren starter på port 9000. Du kan gå videre og teste API ved å bruke Postman ved å sende forespørsler til http://localhost: 9000/.netlify/functions/app
Til slutt, før du setter opp GitHub Actions-arbeidsflyten for å automatisere distribusjoner på Netlify, opprette et depot på GitHub, og push prosjektfilene.
Distribuer Express-applikasjonen på Netlify
Installer først API på Netlify før du konfigurerer arbeidsflyten for GitHub Actions. Følg disse trinnene for å distribuere Express-appen på Netlify.
- Gå over til Netlify og opprett en konto og logg inn på Oversikt side.
- Velg og klikk på Nettsteder fanen.
- Klikk på Importer fra Git knappen og velg GitHub som Git-leverandørplattformen. Netlify vil be deg om å autentisere med GitHub for å gi den tilgang til kontoen din og prosjektlagrene.
- Velg Express-prosjektlageret fra listen over viste depoter.
- Etter å ha valgt depotet, må du konfigurere byggeinnstillingene for distribusjonsprosessen. Netlify forenkler denne prosessen ved å automatisk oppdage teknologien som brukes til å bygge applikasjonen og forhåndsutfylle feltene med de nødvendige byggeinnstillingene. I dette tilfellet byggekommandoen, publiser og funksjonskatalogen.
- Til slutt klikker du på Distribuer nettstedet knappen for å fullføre prosessen.
Opprett en arbeidsflyt for GitHub Actions
Klikk på Handlinger fanen i prosjektets GitHub-lager. I Kontinuerlig integrering seksjon, velg og klikk på Konfigurer Node.js arbeidsflyt.
Fra GitHub-editoren, gi nytt navn til filnavnet til Netify.yml, slett kjeleplaten Node.js arbeidsflytkode, og legg til koden nedenfor:
Navn:ByggeogUtplasseretilNetlify
på:
trykk:
pull_request:
arbeidsplasser:
bygge:
kjører på:ubuntu-22.04
trinn:
-bruker:actions/checkout@v3# (Bygg til ./dist eller annen katalog... )
-Navn:UtplasseretilNetlify
bruker:nwtgck/[email protected]
med:
publiser-dir:'./dist'
produksjonsgren:hoved-
github-token:${{hemmeligheter. GITHUB_TOKEN}}
distribusjonsmelding:"Distribuer fra GitHub Actions"
enable-pull-request-comment:falsk
enable-commit-comment:ekte
overwrites-pull-request-comment:ekte
env:
NETLIFY_AUTH_TOKEN:${{hemmeligheter. NETLIFY_AUTH_TOKEN}}
NETLIFY_SITE_ID:${{hemmeligheter. NETLIFY_SITE_ID}}
timeout-minutter:1
Her er en oversikt over arbeidsflytegenskapene:
- på: Hendelser som utløser handlingene i denne arbeidsflyten.
- arbeidsplasser: Spesifiserer hendelsen som en bestemt handling skal kjøre, som er: bygge- og distribusjonshendelsene.
- kjører på: vertsproduksjonsmiljøet for handlingen.
- trinn: Spesifiserer en rekke trinn involvert for å utføre en bestemt jobb.
- med: Definerer argumentene som kreves for at handlingene skal kjøre riktig.
- env: spesifiserer de nødvendige miljøvariablene for arbeidsflyten.
Til slutt, forplikte oppdateringene som er gjort til denne filen. GitHub skal automatisk utløse arbeidsflyten.
Den første byggingen vil imidlertid utløse en feil siden du må legge til hemmelige variabler som kreves av arbeidsflyten: den distribuerte nettsteds-IDen og Netlifys autentiseringstoken. Gå over til din Nettstedsinnstillinger på Netify og kopier Nettsted-ID.
For å få autentiseringstokenet, klikk på brukerprofil ikonet, og velg Brukerinstillinger alternativet fra rullegardinvinduet. Velg på innstillingssiden applikasjoner, og klikk Ny tilgangstoken for å generere autentiseringstokenet ditt.
Legg til de to miljøvariablene som NETLIFY_SITE_ID og NETLIFY_AUTH_TOKEN til både miljøvariablene og depothemmelighetsseksjonene i GitHub-depotet ditt. Etter å ha gjort disse endringene, kjør arbeidsflyten på nytt. Netlify vil automatisk distribuere eventuelle påfølgende endringer du trykker ved hjelp av denne pipelinen.
Gå videre og test API ved å bruke Postman ved å sende forespørsler til denne URLen:
Konfigurere CI/CD-rørledninger med GitHub-handlinger og Netlify
Ved å bruke Netlifys serverløse funksjoner kan du distribuere fullverdige webapplikasjoner som omfatter både klientside- og backend-funksjonalitet på Netlify.
I tillegg tilbyr å sette opp CI/CD-pipelines for applikasjoner med GitHub Actions en strømlinjeformet tilnærming til å automatisere bygge- og distribusjonsprosessen. Dette lar deg definere arbeidsflyter som sikrer en sømløs og pålitelig utviklingsprosess, fra ideer og frem til utgivelsesstadiet.