Configurați acest flux de lucru pentru a vă implementa automat aplicația în producție și pentru a vă simplifica procesul de lansare.

Netlify este o platformă de găzduire web și o suită cuprinzătoare de instrumente pentru implementarea și gestionarea aplicațiilor web în cloud.

Dar caracteristicile sale se extind cu mult dincolo de aceasta – funcțiile sale fără server vă permit să rulați cod pe partea de server fără un server dedicat.

Explorați cum să configurați o conductă CI/CD pentru a implementa un API REST Node.js pe Netlify folosind GitHub Actions.

Conducte CI/CD cu acțiuni GitHub: o prezentare generală

Conductele de integrare continuă și livrare continuă (CI/CD) sunt o serie de procese automate, secvenţiale, la care sunt supuse aplicaţiile software înainte de a fi livrate în producţie.

De obicei, conductele CI/CD constau din mai multe faze cheie, inclusiv fazele sursă, construirea, testarea și implementarea.

Deși este posibil să efectuați aceste faze manual, automatizarea lor oferă mai multe avantaje, inclusiv:

instagram viewer
  • Minimizarea riscului de erori umane.
  • Accelerarea procesului de eliberare.
  • Asigurarea unui flux de lucru consistent pentru livrarea software-ului de calitate la producție.

Ce este GitHub Actions?

GitHub Actions este un instrument integrat în GitHub care oferă o gamă largă de acțiuni pre-construite care puteți utiliza pentru a defini fluxurile de lucru ca cod direct în depozitul de proiect pentru a automatiza CI/CD conducte.

De asemenea, puteți crea acțiuni personalizate pentru a se potrivi nevoilor specifice ale proiectului, permițându-vă să construiți și să implementați aplicații în producție fără probleme. Unul dintre avantajele GitHub Actions este integrarea sa perfectă cu alte funcții GitHub, cum ar fi solicitările de extragere și urmărirea problemelor.

Acest lucru face posibilă declanșarea fluxurilor de lucru bazate pe evenimente specifice, cum ar fi un nou commit, asigurând că conductele CI/CD sunt declanșate automat atunci când este necesar.

Configurați proiectul Node.js

Pentru a începe, trebuie să creați un server web Express. Pentru a face acest lucru, creați un nou folder local și schimbați directorul de pe terminalul dvs.

mkdir express-netlify
cd express-netlify

Apoi, creați un pachet.json fișier folosind npm, Managerul de pachete Node.

npm init -y

În cele din urmă, instalați dependențele necesare în proiect.

npm install express netlify-lambda serverless-http

The netlify-lambda pachetul servește ca un server de dezvoltare locală care facilitează testarea funcțiilor fără server. serverless-http ajută la adaptarea aplicațiilor Express.js la un format compatibil cu gestionarea funcțiilor fără server.

Netlify nu oferă suport nativ pentru găzduirea și rularea aplicațiilor backend cu drepturi depline. În schimb, oferă funcții fără server ca soluție alternativă pentru gestionarea funcționalității backend.

Aceste funcții gestionează logica serverului, gestionează solicitările HTTP API și servesc conținut dinamic, oferind funcționalități asemănătoare backend-ului în paradigma fără server.

Puteți găsi codul acestui proiect în documentul său Depozitul GitHub.

Creați serverul Web Express

Creați trei foldere: dist, funcții, și src în directorul rădăcină al folderului de proiect.

Înainte de a configura serverul Express, creați un spațiu liber index.html dosar în dist pliant. Acest fișier acționează ca un substituent care permite Netlify să implementeze cu succes aplicația Express și să servească rutele API.

Acum, creează un src/app.js fișier și adăugați următorul cod:

const expres = cere("expres");
const fără server = cere(„fără server-http”);

const aplicație = expres();
const router = expres. Router();

router.get("/", (req, res) => {
res.send("Salut Lume!")
});

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

modul.exports = aplicație;
modul.exports.handler = fără server (aplicație);

Acest cod definește un server Express cu o singură rută pentru URL-ul rădăcină care gestionează cererile GET. The aplicație.utilizare funcția înregistrează middleware-ul rutei cu aplicația Express, asigurându-se că toate solicitările HTTP efectuate către cale /.netlify/functions/app va fi gestionat corespunzător de către router, chiar și într-un mediu de producție.

În consecință, dacă adăugați un punct final nou, cum ar fi /api/auth, va fi accesibil pe /.netlify/functions/app/api/auth. În cele din urmă, codul exportă aplicația Express și funcția de gestionare fără server.

Acest lucru permite testarea locală a serverului și vă asigură că îl puteți implementa ca funcție fără server pe Netlify.

Definiți fișierul Netlify.toml

În directorul rădăcină, creați un nou Netlify.toml fișier și adăugați următorul cod.

[construi]
baza = "/"
comanda = "npm run build"
publish = "/dist/"
functions = "functii/"
[construire.mediu]
NODE_VERSION = „16”
[funcții]
module_noduri_externe = ["expres"]
node_bundler = "esbuild"
[[redirecționări]]
forță = adevărat
de la = "/api/*"
stare = 200
to = "/.netlify/functions/app/:splat"
[[redirecționări]]
de la = "/*"
stare = 200
la = "/index.html"

Codul specifică setările de configurare a construirii și implementării pentru aplicația Express pe Netlify. Include setări precum directorul de bază, comanda de compilare, directorul de publicare și directorul de funcții.

În plus, definește setările de redirecționare care ar trebui să gestioneze rutarea solicitărilor HTTP API, asigurându-se că acestea sunt direcționate corect către funcțiile fără server Netlify.

Actualizați fișierul Package.json

Deschide pachet.json fișier și adăugați aceste comenzi la obiectul scripts.

"scripte": {
"start": „netlify-lambda serve src”,
"construi": „netlify-lambda build src”
},

Rulați următoarele comenzi pentru a construi și a porni aplicația local.

npm run build
npm run start

Serverul va porni pe portul 9000. Puteți continua și testa API-ul folosind Postman făcând solicitări către http://localhost: 9000/.netlify/functions/app

În cele din urmă, înainte de a configura fluxul de lucru GitHub Actions pentru a automatiza implementările pe Netlify, creați un depozit pe GitHub, și împingeți fișierele de proiect.

Implementați aplicația Express pe Netlify

Mai întâi, implementați API-ul pe Netlify înainte de a configura fluxul de lucru GitHub Actions. Urmați acești pași pentru a implementa aplicația Express pe Netlify.

  1. Du-te la Netlify și creați un cont și conectați-vă la Prezentare generală pagină.
  2. Selectați și faceți clic pe Site-uri fila.
  3. Faceți clic pe Importă din Git butonul și selectați GitHub ca platformă de furnizor Git. Netlify vă va solicita să vă autentificați cu GitHub pentru a-i acorda acces la contul dvs. și la depozitele de proiect.
  4. Selectați depozitul de proiect Express din lista de depozite afișate.
  5. După selectarea depozitului, trebuie să configurați setările de compilare pentru procesul de implementare. Netlify simplifică acest proces prin detectarea automată a tehnologiei utilizate pentru a construi aplicația și pre-populează câmpurile cu setările de compilare necesare. În acest caz, comanda build, publish și directorul de funcții.
  6. În cele din urmă, faceți clic pe Implementează site-ul butonul pentru a finaliza procesul.

Creați un flux de lucru GitHub Actions

Faceți clic pe Acțiuni fila din depozitul GitHub al proiectului dvs. În Integrare continuă secțiune, selectați și faceți clic pe Configurați Node.js fluxul de lucru.

Din editorul GitHub, redenumiți numele fișierului în Netlify.yml, ștergeți codul de flux de lucru Node.js standard și adăugați codul de mai jos:

Nume:ConstruișiImplementeazălaNetlify
pe:
Apăsaţi:
pull_request:
locuri de munca:
construi:
rulează pe:ubuntu-22.04
pași:
-utilizeaza:actions/checkout@v3

# ( Build to ./dist sau alt director... )

-Nume:ImplementeazălaNetlify
utilizeaza:nwtgck/[email protected]
cu:
publish-dir:'./dist'
ramura de productie:principal
github-token:${{secrete. GITHUB_TOKEN}}
deploy-message:„Implementează din GitHub Actions”
activare-pull-request-comentare:fals
enable-commit-comment:Adevărat
suprascrie-pull-request-coment:Adevărat
env:
NETLIFY_AUTH_TOKEN:${{secrete. NETLIFY_AUTH_TOKEN}}
NETLIFY_SITE_ID:${{secrete. NETLIFY_SITE_ID}}
timeout-minute:1

Iată o defalcare a proprietăților fluxului de lucru:

  • pe: Evenimente care declanșează acțiunile din acest flux de lucru.
  • locuri de munca: Specifică evenimentul pe care ar trebui să o ruleze o anumită Acțiune, care sunt: ​​evenimentele de construire și implementare.
  • rulează pe: mediul de producție gazdă pentru acțiune.
  • trepte: Specifică o serie de pași implicați pentru a efectua o anumită lucrare.
  • cu: Definește argumentele necesare pentru ca acțiunile să ruleze corect.
  • înv: specifică variabilele de mediu necesare pentru fluxul de lucru.

În cele din urmă, comite actualizările făcute în acest fișier. GitHub ar trebui să declanșeze automat fluxul de lucru.

Cu toate acestea, versiunea inițială va declanșa o eroare, deoarece trebuie să adăugați variabile secrete cerute de fluxul de lucru: ID-ul site-ului implementat și jetonul de autentificare Netlify. Mergi la tine Setările site-ului pe Netlify și copiați ID-ul site-ului.

Pentru a obține indicativul de autorizare, faceți clic pe profilul utilizatorului pictograma și selectați Setarile utilizatorului opțiunea din fereastra drop-down. Pe pagina de setări, selectați Aplicații, și faceți clic Token de acces nou pentru a genera indicativul de autentificare.

Adăugați cele două variabile de mediu ca NETLIFY_SITE_ID și NETLIFY_AUTH_TOKEN atât la secțiunile variabile de mediu, cât și la secretele depozitului din depozitul dvs. GitHub. După efectuarea acestor modificări, rulați din nou fluxul de lucru. Netlify va implementa automat orice modificări ulterioare pe care le introduceți folosind această conductă.

Continuați și testați API-ul folosind Postman făcând solicitări la această adresă URL: /.netlify/functions/app.

Configurarea conductelor CI/CD cu acțiuni GitHub și Netlify

Utilizând funcțiile fără server ale Netlify, puteți implementa aplicații web cu drepturi depline care cuprind atât funcționalitatea clientului, cât și funcționalitatea backend pe Netlify.

În plus, configurarea conductelor CI/CD pentru aplicații cu GitHub Actions oferă o abordare simplificată pentru automatizarea procesului de construire și implementare. Acest lucru vă permite să definiți fluxuri de lucru care asigură un proces de dezvoltare fără întreruperi și de încredere, pornind de la idee și trecând până la etapa de lansare.