Kako koristiti Dependabot kako biste održavali svoje okruženje ažurnim

Dodavanje ovisnosti projektu često vam pomaže da ne izmislite kotačić. Ali istodobno može uzrokovati probleme u mnogim različitim aspektima projekta:

  • Izrada verzija: ponekad ovisnosti mogu zahtijevati određene verzije drugih ovisnosti, a to može uzrokovati štucanje u vašoj aplikaciji
  • Spajanje: morate biti oprezni da ne završite s previše dodatnog koda koji će napuhati vaše snopove
  • Ažuriranje: JavaScript se brzo kreće i ako redovno ne ažurirate pakete, ubuduće ćete igrati Jengu.

Postoje različiti alati koji pokrivaju zadatak ažuriranja ovisnosti, poput Dependencies.io, Snyk i Dependabot. Budući da već neko vrijeme koristim Dependabot, odlučio sam pisati o svom iskustvu.

Dependabot je alat koji je GitHub nabavio prije godinu dana i koji provjerava datoteke ovisnosti s različitih jezika (Ruby, JavaScript, Python, PHP, Elixir, da nabrojimo neke) i pronalazi nove verzije knjižnica koje koristite u projektu. Evo postavki:

Snimka zaslona Dependabota

Dnevna ažuriranja mogu biti neodoljiva i mislim da tjedna ažuriranja imaju bolju cijenu / korist. Također, dodijelim si Zahtjeve za povlačenje kako bih mogao primati obavijesti čim se otvore.

Kako učinkovito koristiti Dependabot

Dependabot uključuje, u svaki PR, napomene o izdanju, zapise promjena, veze za urezivanje i detalje o ranjivosti kad god je dostupno. Ovo je korisno jer možete pogledati informacije i odlučiti nastaviti ili ne.

Međutim, kao pragmatični programeri, želimo osigurati da se stvari ne slome. Pojedinosti o PR-u su važne, ali više od toga želimo simulaciju svih (ili gotovo svih) rezultata koje projekt ima.

CI integracija

Ova snimka zaslona prikazuje što se događa svaki put kada se PR otvori u bazi kodova biblioteke komponenata mog rada.

  • Testovi (Jest / Bundle) : zadatak Jest testirat će komponente React, dok će zadatak Bundle simulirati naredbe grupiranja koje pokrećemo kada želimo ažurirati paket u registru NPM
  • Linteri (Stylesheets / JavaScript) : datoteke stilskih tablica slijede prilagođenu postavku sass-lint, a JS kôd slijedi niz ESLint pravila. Ako PR uvede novu verziju lintera s novim pravilima, moći ćemo to uhvatiti.
  • Cypress (testiranje snimke zaslona / ispitivanje pristupačnosti) : ako novi paket uvede promjene koje se mogu odraziti na izgled i dojam komponenata, Cypress će uhvatiti razliku, snimiti snimak zaslona i pohraniti u S3. Budući da Cypress treba živu verziju web stranice s dokumentacijom, pokrivamo i postupak izrade Gatsbyja.

Uz sve ove korake, malo je vjerojatno da će vanjski paket slomiti našu glavnu granu. Svaka čast mom suradniku Grantu Leeu koji također radi na ovom projektu.

Također objavljeno na mom blogu. Ako vam se sviđa ovaj sadržaj, slijedite me na Twitteru i GitHubu. Naslovnu fotografiju Zhang Kenny na Unsplash