Ugrás a tartalomra

runnerhut

Útmutatók

Megoldások azokra a CI-problémákra, amelyekkel a csapatok tényleg találkoznak.

Sebesség13

Hogyan lehet felgyorsítani a GitHub ActionsAz Ön csővezetéke tovább tart, mint amennyit bárki várni szeretne, és nem egyértelmű, hová telik az idő.Hogyan lehet megtalálni a lassú lépést a munkafolyamatbanA folyamat lassú, de minden egyes lépés ésszerűnek tűnik.Hogyan csökkenthető a GitHub Actions hidegindításaA feladatok 30-90 másodpercig maradnak az első lépés végrehajtása előtt.A GitHub Actions várakozási idők diagnosztizálásaA munkák percekig sorban állnak, mielőtt egy futó felveszi őket.Hogyan lehet gyorsabbá tenni a fizetésta műveletek/kijelentkezés perceket vesz igénybe egy nagy adattáron.Hogyan lehet CI-t futtatni egy nagyon nagy adattáronA fizetés, az indexelés és az állapotjelentés mind leromlik, ahogy az adattár növekszik.A Git LFS fizetések felgyorsításaAz LFS objektumok sorozatosan töltődnek le, és uralják a fizetési időt.Hogyan lehet kiküszöbölni az üresjáratokat a munkahelyekenA munkák azzal töltik az időt, hogy semmit sem csinálnak – várnak egy szolgáltatásra, alvásra vagy szavazási körre.Hogyan kell kezelni a hosszú távú munkákatEgyes munkák órákig tartanak, és időnként elérik a hatórás határt.Hogyan futtass hatékonyan éjszakai építkezéseketAz éjszakai építkezések drágák, és senki sem olvassa el az eredményeket.Hogyan lehet megállítani a CI újrafuttatási viharokatA fejlesztők ismételten futtatják a sikertelen feladatokat, megsokszorozzák a költségeket és elrejtik a valódi hibákat.Hogyan lehet szilánkos teszteket mátrixon keresztülEgy hosszú tesztmunka uralja a folyamatot.Csak a változás által érintett tesztek futtatásaMinden nyomás lefuttatja a teljes tesztcsomagot, függetlenül attól, hogy mi változott.

Költség13

A GitHub Actions költségeinek csökkentéseA CI-számla gyorsabban nő, mint a csapaté, és senki sem tudja, miért.Hogyan mérjük a CI-költséget lehívási kérésenkéntIsmeri a havi végösszeget, de azt nem, hogy mennyibe kerül egy lehívási kérelem.Hogyan rendeljük hozzá a CI-költséget a csapatokhozA CI-költés egy sor a számlán, és egyetlen csapat sem érez felelősséget érte.CI perc költségvetés beállításaA költést a hónap végén fedezik fel, nem pedig a hónap során szabályozzák.Amikor a nagyobb futók valóban pénzt takarítanak megEgy nagyobb futó többe kerül percenként, így nem világos, hogy összességében olcsóbb-e.A macOS futtató költségeinek csökkentéseA macOS uralja a CI-számlát.Hogyan lehet csökkenteni a CI kilépési költségeitAz adatátvitel a BYOC számla nagy és egyre növekvő részét teszi ki.Hogyan csökkenthető az ECR pull költségeiA konténerkép-lehívások jelentős adatátviteli költségeket generálnak.Hogyan csökkenthetjük az S3 átviteli költségeit a CI-benA gyorsítótár és a műtermék-forgalom az S3 felé drága.A saját vendéglátó futók valós költségeA saját vendéglátó futók ingyenesnek tűnnek a percszámlázás mellett.A spot példányok használata CI-futók számáraAz igény szerinti példányok drágák a természetüknél fogva újrapróbálható munkaterhelésekhez.Hogyan állítsd be a megfelelő méretű futókatA futóméreteket egyszer választották ki, és soha nem nézték meg újra.Hogyan lehet gazdaságosan futtatni a CI-t nyílt forráskódonA nyílt forráskódú CI ingyenes a GitHub által üzemeltetett futókon, de lassú, és az öntárolás nem biztonságos.

Gyorsítótárazás16

Hogyan lehet a CI gyorsítótárakat ténylegesen fennmaradniA gyorsítótárak konfigurálva vannak, de a találati arány alacsony.Hogyan lehet megkerülni a 10 GB-os gyorsítótár-korlátotA gyorsítótárak tárolónként meghaladják a 10 GB-ot, és elkezdődik a csendes kilakoltatás.Hogyan lehet megosztani egy build gyorsítótárat a tárolók közöttMinden adattár saját gyorsítótárat tart fenn ugyanazon megosztott függőségek számára.A Docker gyorsítótár megosztása a feladatok közöttMinden mátrix láb ugyanazokat a rétegeket építi újra.A Docker gyorsítótár érvénytelenítésének elhárításaA Docker rétegek akkor is újraépülnek, ha a vonatkozó fájlok nem változtak.Hogyan írjunk olyan gyorsítótár-kulcsot, amely eltaláljaA gyorsítótár konfigurálva van, de minden futtatáskor hiányzik.A gyorsítótár használata a GitHub ActionsA C és C++ buildek mindent újrafordítanak minden futtatáskor.A sccache használata Rust buildekhezA Cargo újraépíti a függőségeket, amikor a célkönyvtár gyorsítótára hiányzik.A Gradle konfigurációs gyorsítótárának engedélyezéseA Gradle 30-60 másodpercet tölt a konfigurálással, mielőtt bármit is fordítana.Az eszközlánc-kezelők gyorsítótárazásaA mise, asdf vagy proto újratelepíti a nyelvi futtatókörnyezetet minden futtatáskor.A NuGet-csomagok gyorsítótárazásaA dotnet restore minden futtatáskor ugyanazokat a csomagokat tölti le.A Jest transzformációk gyorsítótárazásaA Jest minden futtatáskor minden fájlt újraalakít.A vcpkg és a Conan csomagok gyorsítótárazásaA C++-függőségkezelők minden futtatáskor újraépítik a csomagokat a forrásból.Az Xcode DerivedData gyorsítótárazásaAz Xcode minden CI-futáskor újraépíti az egész projektet.A buildx gyorsítótár-háttér kiválasztásaNégy gyorsítótár-háttérprogram van, és nem világos, hogy melyiket használja.Hogyan lehet melegen tartani az alap ág gyorsítótárátAz új szolgáltatáságak mindig hideg gyorsítótárral kezdődnek.

Docker12

A Docker réteggyorsítótár beállításaA Docker felépítése tíz percet vesz igénybe, mert minden réteg újraépül.Hogyan optimalizálhatunk egy Docker-fájlt CI-hezA kis kódmódosítások hosszú újraépítést váltanak ki.A többlépcsős Docker buildek használataA képek nagyok, és olyan összeállítási eszközöket tartalmaznak, amelyeket nem szabad elküldeni.Egyidejű Docker buildek biztonságos futtatásaA párhuzamos mátrixlábak versengenek, és az építmények lelassulnak vagy meghiúsulnak.Távoli Docker builder használataA réteggyorsítótár minden összeállításnál átkerül a futtatóba és onnan.Hogyan készítsünk többplatformos képeket gyorsanA linux/arm64 hozzáadásával a felépítés húsz percet vesz igénybe.Hogyan lehet csökkenteni a konténer képméretétA képek több száz megabájtosak, és lassúak a betöltésük minden feladathoz.Hogyan lehet titkokat átvinni egy Docker buildbeA felépítés során szükség van egy privát regisztrációs tokenre vagy SSH-kulcsra.A Docker builder profilok konfigurálásaA különböző képekhez különböző építői erőforrások szükségesek.Hogyan készítsünk sok képet egy monorepobólMinden lenyomással felépül minden kép az adattárban.Több nyilvántartásban való közzétételUgyanaz a képfájl egyszer kerül összeállításra rendszerleíró adatbázisonként.A rendszerleíró adatbázis áthúzó gyorsítótárának beállításaA képlehívások lassúak, és folyamatosan eléri a Docker Hub sebességkorlátait.

Skála28

Hogyan lehet méretezni a saját vendéglátó futókatAz önállóan gazdálkodó futók csúcsidőben állnak sorban, vagy tétlenül ülnek és drágák.A futócsoportok használataBármely tárhely ütemezheti a feladatokat bármely futón.Hogyan tervezzünk futócímkés stratégiátA címkék szervesen növekedtek, és senki sem tudja, melyiket használja.Hosted vagy BYOC: hogyan válasszNem biztos abban, hogy hosztolt futókat használ-e, vagy saját felhőbe telepítse.Az újrafelhasználható munkafolyamatok nagyarányú használataÖtven adattárnak ötven, kissé eltérő másolata van ugyanannak a folyamatnak.Hogyan lehet koordinálni a munkafolyamatokat az adattárak közöttAz egyik adattárban végrehajtott változtatásnak ki kell váltania a többiben a felépítést.Hogyan készítsünk egyedi futóképeketMinden munka percekig tart ugyanazon eszközök telepítésével.Az alapképfrissítések biztonságos közzétételeAz alapképfrissítés megszakítja az építményeket egyszerre több tárolóban.Hogyan kezeljük a függőségi bot CI terheléstA Dependabot harminc lehívási kérelmet nyit meg, és CI-költségcsúcsokat nyit meg.Hogyan kell dolgozni egyidejűségi korlátokkalFeladatsor, és nem világos, hogy melyik korlát kötelező.Hogyan lehet hatékonyan használni a konténeres feladatokatA tárolófeladatok reprodukálhatóságot biztosítanak, de megszakítják a gyorsítótárat.A szerviztárolók megfelelő használataA tesztek időszakosan meghiúsulnak az indításkor.Hogyan építsünk egyszer és telepítsünk többszörUgyanaz a műtárgy újjáépül minden környezethez.Hogyan strukturáljuk a telepítési munkákatA telepítés lassú, kockázatos és nehezen ellenőrizhető.Az előnézeti környezetek hatékony futtatásaMinden lehívási kérelem egy teljes környezeti összeállításra vár.Hogyan strukturáljuk a kiadási építményeketA kiadások lassúak és esetenként nem reprodukálhatók.Építési műtermékek közzétételeA műtermékek tárolási költségei nőnek, és a megőrzést soha nem konfigurálták.A nagyméretű műtermék-feltöltések kezeléseA build kimenetének feltöltése perceket vesz igénybe.Hogyan szerezhet be növekményes buildeket a CI-benA CI mindig tiszta összeállítást végez, még akkor is, ha az összeállítási rendszere támogatja a növekményes fordítást.Hogyan lehet adatokat átadni a munkák közöttA munkáknak meg kell osztaniuk az építési teljesítményt, és nem világos, hogyan.Hogyan kell jól használni a mátrix építményeketA mátrix nőtt, és senki sem emlékszik, miért létezik az egyes kombinációk.Hogyan lehet irányítani a mátrix robbanástEgy kis mátrixmódosítás megháromszorozta a munkák számát és a számlát.A futók méretezése Java buildekhezMaven vagy Gradle felépítésű futóméretre tippel.A futók méretezése a Node tesztcsomagokhozA Jest vagy a Vitest dolgozói vagy éheznek, vagy vernek, és nem biztos benne, hogy melyiket.A futók méretezése Python tesztcsomagokhozA pytest egy magon fut, míg a futónak nyolc üresjárata van.Hogyan méretezzük a futókat Rust építményekhezA Cargo magokkal építi a méretet, de nem világos, hogy ez meddig megy el.A futók méretezése Docker építményekhezÖn kiválaszt egy futóméretet a képalkotásokhoz.A futók méretezése Android buildekhezA gradle-összeállításokhoz és a műszervizsgálatokhoz nagyon különböző gépekre van szükség.