Ställ in det här arbetsflödet för att automatiskt distribuera din app till produktion och effektivisera din releaseprocess.

Netlify är en webbhotellplattform och en omfattande uppsättning verktyg för att distribuera och hantera webbapplikationer i molnet.

Men dess funktioner sträcker sig långt utöver detta – dess serverlösa funktioner låter dig köra kod på serversidan utan en dedikerad server.

Utforska hur du konfigurerar en CI/CD-pipeline för att distribuera ett Node.js REST API på Netlify med hjälp av GitHub Actions.

CI/CD-pipelines med GitHub-åtgärder: en översikt

Continuous Integration and Continuous Delivery (CI/CD) pipelines är en serie sekventiella, automatiserade processer som mjukvaruapplikationer genomgår innan de skickas till produktion.

Vanligtvis består CI/CD-pipelines av flera nyckelfaser, inklusive käll-, bygg-, test- och distributionsfaser.

Även om det är möjligt att utföra dessa faser manuellt, erbjuder automatisering av dem flera fördelar, inklusive:

  • Minimerar risken för mänskliga fel.
  • instagram viewer
  • Påskyndar releaseprocessen.
  • Säkerställa ett konsekvent arbetsflöde för leverans av kvalitetsmjukvara till produktion.

Vad är GitHub Actions?

GitHub Actions är ett verktyg integrerat i GitHub som tillhandahåller ett brett utbud av förbyggda åtgärder som du kan använda för att definiera arbetsflöden-som-kod direkt i ditt projektförråd för att automatisera CI/CD: n rörledningar.

Du kan också skapa anpassade åtgärder för att passa dina specifika projektbehov, så att du kan bygga och distribuera applikationer till produktion utan problem. En av fördelarna med GitHub Actions är dess sömlösa integration med andra GitHub-funktioner, såsom pull-förfrågningar och problemspårning.

Detta gör det möjligt att trigga arbetsflöden baserat på specifika händelser, såsom en ny commit som säkerställer att dina CI/CD-pipelines automatiskt triggas vid behov.

Konfigurera Node.js-projektet

För att komma igång måste du skapa en Express webbserver. För att göra det, skapa en ny mapp lokalt och ändra katalogen på din terminal.

mkdir express-netify
cd express-netify

Skapa sedan en package.json fil med hjälp av npm, Node Package Manager.

npm init -y

Installera slutligen de beroenden som krävs i projektet.

npm installera express netlify-lambda serverlös-http

De netify-lambda paketet fungerar som en lokal utvecklingsserver som underlättar testning av serverlösa funktioner. serverlös-http hjälper till att anpassa Express.js-appar till ett format som är kompatibelt med serverlösa funktionshanterare.

Netlify tillhandahåller inte inbyggt stöd för att vara värd för och köra fullfjädrade backend-applikationer. Istället erbjuder den serverlösa funktioner som en alternativ lösning för att hantera backend-funktionalitet.

Dessa funktioner hanterar logik på serversidan, hanterar HTTP API-förfrågningar och serverar dynamiskt innehåll, vilket ger backend-liknande funktionalitet inom det serverlösa paradigmet.

Du kan hitta detta projekts kod i dess GitHub-förråd.

Skapa Express Web Server

Skapa tre mappar: dist, funktioner, och src i rotkatalogen i din projektmapp.

Innan du ställer in Express-servern, skapa en tom index.html fil i dist mapp. Den här filen fungerar som en platshållare som tillåter Netlify att framgångsrikt distribuera Express-applikationen och betjäna API-rutter.

Skapa nu en src/app.js fil och lägg till följande kod:

konst uttrycka = behöva("uttrycka");
konst serverlös = behöva("serverlös-http");

konst app = express();
konst router = express. Router();

router.get("/", (req, res) => {
res.send("Hej världen!")
});

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

modul.exports = app;
modul.exports.handler = serverlös (app);

Denna kod definierar en Express-server med en enda rutt för rot-URL: n som hanterar GET-förfrågningar. De app.användning funktionen registrerar ruttens mellanprogram med Express-applikationen och säkerställer att alla HTTP-förfrågningar som görs till sökvägen /.netlify/functions/app kommer att hanteras korrekt av routern, även i en produktionsmiljö.

Följaktligen, Om du lägger till en ny slutpunkt som t.ex /api/auth, kommer den att vara tillgänglig på /.netlify/functions/app/api/auth. Slutligen exporterar koden Express-applikationen och den serverlösa hanterarfunktionen.

Detta möjliggör lokal testning av servern och säkerställer att du kan distribuera den som en serverlös funktion på Netlify.

Definiera filen Netlify.toml

Skapa en ny i rotkatalogen Netify.toml fil och lägg till följande kod.

[bygga]
bas = "/"
kommando = "npm kör bygg"
publicera = "/dist/"
functions = "funktioner/"
[build.environment]
NODE_VERSION = "16"
[funktioner]
externa_nodmoduler = ["uttrycka"]
node_bundler = "esbuild"
[[omdirigeringar]]
kraft = sant
från = "/api/*"
status = 200
to = "/.netlify/functions/app/:splat"
[[omdirigeringar]]
från = "/*"
status = 200
till = "/index.html"

Koden anger bygg- och distributionskonfigurationsinställningarna för Express-appen på Netlify. Den innehåller inställningar som baskatalogen, byggkommandot, publicera katalogen och funktionskatalogen.

Dessutom definierar den omdirigeringsinställningar som ska hantera routningen av HTTP API-förfrågningar, vilket säkerställer att de är korrekt riktade till Netlify-serverlösa funktioner.

Uppdatera filen Package.json

Öppna package.json fil och lägg till dessa kommandon till skriptobjektet.

"skript": {
"Start": "netlify-lambda serve src",
"bygga": "netlify-lambda build src"
},

Kör följande kommandon för att bygga och starta programmet lokalt.

npm kör bygg
npm körstart

Servern startar på port 9000. Du kan gå vidare och testa API: t med Postman genom att göra förfrågningar till http://localhost: 9000/.netlify/functions/app

Slutligen, innan du ställer in GitHub Actions-arbetsflödet för att automatisera distributioner på Netlify, skapa ett arkiv på GitHub, och skjut projektfilerna.

Distribuera Express-applikationen på Netlify

Installera först API: et på Netlify innan du konfigurerar GitHub Actions-arbetsflödet. Följ dessa steg för att distribuera Express-appen på Netlify.

  1. Gå över till Netlify och skapa ett konto och logga in på Översikt sida.
  2. Välj och klicka på Webbplatser flik.
  3. Klicka på Importera från Git knappen och välj GitHub som Git-leverantörsplattformen. Netlify kommer att uppmana dig att autentisera med GitHub för att ge det åtkomst till ditt konto och projektförråden.
  4. Välj Express-projektförrådet från listan över visade förråd.
  5. Efter att ha valt förvaret måste du konfigurera bygginställningarna för distributionsprocessen. Netlify förenklar denna process genom att automatiskt upptäcka tekniken som används för att bygga applikationen och fyller i fälten med de nödvändiga bygginställningarna. I det här fallet, kommandot build, publicering och funktionskatalogen.
  6. Klicka slutligen på Implementera webbplats för att slutföra processen.

Skapa ett arbetsflöde för GitHub Actions

Klicka på Handlingar fliken i ditt projekts GitHub-förråd. I den Fortsatt integration sektion, välj och klicka på Konfigurera Node.js arbetsflöde.

Från GitHub-redigeraren, byt namn på filnamnet till Netify.yml, ta bort koden för Node.js arbetsflöde och lägg till koden nedan:

namn:ByggaochDistribueratillNetlify
på:
skjuta på:
pull_request:
jobb:
bygga:
går på:ubuntu-22.04
steg:
-använder:actions/checkout@v3

# (Bygg till ./dist eller annan katalog... )

-namn:DistribueratillNetlify
använder:nwtgck/[email protected]
med:
publicera-dir:'./avstånd'
produktionsgren:huvud
github-token:${{hemligheter. GITHUB_TOKEN}}
deploy-meddelande:"Distribuera från GitHub Actions"
enable-pull-request-comment:falsk
enable-commit-comment:Sann
overwrites-pull-request-comment:Sann
env:
NETLIFY_AUTH_TOKEN:${{hemligheter. NETLIFY_AUTH_TOKEN}}
NETLIFY_SITE_ID:${{hemligheter. NETLIFY_SITE_ID}}
timeout-minuter:1

Här är en uppdelning av arbetsflödesegenskaperna:

  • : Händelser som utlöser åtgärderna i det här arbetsflödet.
  • jobb: Anger händelsen som en viss åtgärd ska köras som är: bygg- och distributionshändelser.
  • går på: värdproduktionsmiljön för åtgärden.
  • steg: Anger en serie steg som är involverade för att utföra ett visst jobb.
  • med: Definierar de argument som krävs för att åtgärderna ska köras korrekt.
  • env: anger de miljövariabler som krävs för arbetsflödet.

Slutligen, bekräfta uppdateringarna som gjorts till den här filen. GitHub bör automatiskt utlösa arbetsflödet.

Den initiala byggnaden kommer dock att utlösa ett fel eftersom du måste lägga till hemliga variabler som krävs av arbetsflödet: det distribuerade webbplats-ID och Netlifys autentiseringstoken. Gå över till din Webbplatsinställningar på Netlify och kopiera Webbplats-ID.

För att få autentiseringstoken, klicka på användarprofil ikonen och välj Användarinställningar alternativ från rullgardinsmenyn. Välj på inställningssidan Ansökningar, och klicka Ny åtkomsttoken för att generera din autentiseringstoken.

Lägg till de två miljövariablerna som NETLIFY_SITE_ID och NETLIFY_AUTH_TOKEN till både miljövariablerna och arkivhemlighetssektionerna i ditt GitHub-arkiv. När du har gjort dessa ändringar kör du arbetsflödet igen. Netlify kommer automatiskt att distribuera alla efterföljande ändringar du driver med den här pipeline.

Gå vidare och testa API: et med Postman genom att göra förfrågningar till denna URL: /.netlify/functions/app.

Konfigurera CI/CD-pipelines med GitHub Actions och Netlify

Genom att använda Netlifys serverlösa funktioner kan du distribuera fullfjädrade webbapplikationer som omfattar både klient- och backendfunktionalitet på Netlify.

Dessutom erbjuder konfigurering av CI/CD-pipelines för applikationer med GitHub Actions en strömlinjeformad metod för att automatisera bygg- och distributionsprocessen. Detta gör att du kan definiera arbetsflöden som säkerställer en sömlös och tillförlitlig utvecklingsprocess, med start från idé och framsteg till releasestadiet.