runnerhut
Průvodci
Řešení problémů CI, na které týmy skutečně narážejí.
Rychlost13
Jak urychlit GitHub ActionsVaše potrubí trvá déle, než chce kdokoli čekat, a není zřejmé, kam jde čas.Jak najít pomalý krok v pracovním postupuPotrubí je pomalé, ale každý jednotlivý krok vypadá rozumně.Jak snížit GitHub Actions studené startyÚlohy zůstávají 30 až 90 sekund, než proběhne první krok.Jak diagnostikovat GitHub Actions doby frontyÚlohy jsou ve frontě několik minut, než si je běžec vyzvedne.Jak zrychlit git checkoutakce/checkout trvá minuty na velkém úložišti.Jak spustit CI na velmi velkém úložištiPokladna, indexování a hlášení stavu se s rostoucím úložištěm zhoršují.Jak zrychlit platby Git LFSObjekty LFS se stahují sériově a dominují době pokladny.Jak eliminovat prostoje v zaměstnáníPráce tráví čas nicneděláním – čekáním na službu, spánek nebo smyčku hlasování.Jak zvládnout dlouhotrvající práceNěkteré práce trvají hodiny a občas narazí na šestihodinový limit.Jak efektivně provozovat noční buildyNoční stavby jsou drahé a nikdo nečte výsledky.Jak zastavit opakované bouře CIVývojáři opakovaně spouštějí neúspěšné úlohy, čímž násobí náklady a skrývají skutečné selhání.Jak provádět testy střepů napříč maticíJedna dlouhá testovací úloha dominuje potrubí.Jak spustit pouze testy ovlivněné změnouKaždé stisknutí spustí celou testovací sadu bez ohledu na to, co se změnilo.
náklady13
Jak snížit náklady na GitHub ActionsÚčet CI roste rychleji než tým a nikdo si není jistý proč.Jak měřit náklady CI na žádost o staženíZnáte měsíční součet, ale nevíte, kolik stojí jeden požadavek na stažení.Jak přiřadit náklady CI týmůmVýdaje za CI jsou na faktuře jeden řádek a žádný tým za ně necítí odpovědnost.Jak nastavit rozpočet CI minutVýdaje jsou zjišťovány na konci měsíce, nikoli kontrolovány v jeho průběhu.Když větší běžci skutečně šetří penízeVětší běžec stojí více za minutu, takže není jasné, zda je celkově levnější.Jak snížit náklady na běžce macOSmacOS dominuje účtu CI.Jak snížit náklady na výstup CIPřenos dat představuje velký a rostoucí podíl na účtu BYOC.Jak snížit náklady na stahování ECRStahování obrázků kontejnerů generuje značné poplatky za přenos dat.Jak snížit náklady na přenos S3 v CIProvoz mezipaměti a artefaktů do S3 je drahý.Skutečné náklady běžců s vlastním hostitelemSamoobslužní běžci vypadají vedle účtování za minutu zdarma.Jak používat instance spotů pro běžce CIInstance na vyžádání jsou drahé pro pracovní zátěže, které lze přirozeně opakovat.Jak správně nastavit velikost běžcůVelikosti běžců byly vybrány jednou a nikdy nebyly znovu navštíveny.Jak provozovat CI ekonomicky na open sourceOpen source CI je zdarma na serverech hostovaných na GitHubu, ale je pomalý a vlastní hostování není bezpečné.
Ukládání do mezipaměti16
Jak zajistit, aby mezipaměti CI skutečně přetrvávalyMezipaměti jsou nakonfigurovány, ale četnost návštěv je nízká.Jak obejít limit 10 GB mezipamětiVaše mezipaměti přesahují 10 GB na úložiště a začnou tiše vyklízet.Jak sdílet mezipaměť sestavení napříč repozitářiKaždé úložiště udržuje svou vlastní mezipaměť pro stejné sdílené závislosti.Jak sdílet mezipaměť Docker mezi úlohamiKaždá maticová noha přestavuje stejné vrstvy.Jak opravit zneplatnění mezipaměti DockerVrstvy Docker se znovu sestaví, i když se příslušné soubory nezměnily.Jak zapsat klíč mezipaměti, který zasáhneMezipaměť je nakonfigurována, ale chybí při každém spuštění.Jak používat ccache v GitHub ActionsSestavení C a C++ překompilují vše při každém spuštění.Jak používat sccache pro sestavení RustCargo znovu sestaví závislosti, kdykoli dojde k chybě mezipaměti cílového adresáře.Jak povolit mezipaměť konfigurace GradleGradle stráví 30 až 60 sekund konfigurací, než cokoliv zkompiluje.Jak ukládat správce toolchain do mezipamětimise, asdf nebo proto přeinstalujte jazykové moduly runtime při každém spuštění.Jak ukládat balíčky NuGet do mezipamětidotnet restore stahuje stejné balíčky při každém spuštění.Jak ukládat do mezipaměti transformace JestJest znovu transformuje každý soubor při každém spuštění.Jak ukládat do mezipaměti balíčky vcpkg a ConanSprávci závislostí C++ znovu sestavují balíčky ze zdroje při každém spuštění.Jak ukládat Xcode DerivedData do mezipamětiXcode přestaví celý projekt při každém spuštění CI.Výběr backendu mezipaměti buildxExistují čtyři backendy mezipaměti a není jasné, který použít.Jak udržovat mezipaměť základní větve v tepleVětve nových funkcí vždy začínají chladnou mezipamětí.
Docker12
Jak nastavit ukládání do mezipaměti vrstvy DockerSestavení Docker trvá deset minut, protože každá vrstva se znovu sestavuje.Jak optimalizovat Dockerfile pro CIMalé změny kódu spouštějí dlouhé přestavby.Jak používat vícestupňové sestavení DockerObrázky jsou velké a obsahují stavební nástroje, které by se neměly dodávat.Jak bezpečně spouštět souběžné sestavení DockerParalelní maticové nohy zápasí a stavby se zpomalují nebo selhávají.Jak používat vzdálený stavitel DockerMezipaměť vrstev se přenáší do az běžce při každém sestavení.Jak rychle vytvářet multiplatformní obrázkyPřidání linux/arm64 zabere sestavení dvacet minut.Jak zmenšit velikost obrázku kontejneruObrázky mají stovky megabajtů a pomalu se vtahují do každé úlohy.Jak předat tajemství do sestavení DockerBěhem sestavení potřebujete token soukromého registru nebo klíč SSH.Jak nakonfigurovat profily stavitele DockerRůzné obrázky vyžadují různé zdroje pro tvůrce.Jak vytvořit mnoho obrázků z monorepaKaždý push vytvoří každý obrázek v úložišti.Jak publikovat do více registrůStejný obraz je vytvořen jednou pro každý registr.Jak nastavit vyrovnávací mezipaměť registruStahování obrázků je pomalé a stále narážíte na Docker limity rychlosti hubu.
paže647
Jak přesunout CI na běžce arm64Nasadíte na Graviton nebo Ampere, ale stavíte na x64.kontrolní seznam migrace arm64Chcete přejít na arm64, aniž byste přerušili potrubí.Křížová kompilace versus nativní arm64Potřebujete binární soubory arm64 a nejste si jisti, zda křížově kompilovat nebo stavět nativně.Proč jsou sestavy QEMU arm64 tak pomaléPřidání linux/arm64 do sestavení Docker jej zpomalí dvacetkrát.Oprava nativních modulů Node na arm64Instalace npm selže nebo se zkompiluje ze zdroje na běžcích arm64.Oprava kol Pythonu na arm64pip install kompiluje balíčky ze zdrojového kódu na arm64.Staví na pojezdech AWS GravitonV CI chcete výhodu ceny a výkonu Graviton.
macOS a iOS8
Jak zkrátit dobu sestavení Xcode v CISestavení Xcode trvá dvacet minut při každém spuštění.Jak urychlit testy simulátoru iOSTesty na simulátoru trvají půl hodiny.Jak zvládnout podepisování kódu iOS v CIPodepisování funguje lokálně a v CI občas selhává.Jak notářsky ověřit aplikace macOS v CINotářské ověření je pomalé a občas vyprší.Oprava vyčerpání disku macOS runnerÚlohy se nezdaří a na zařízení v systému macOS nezbývá místo.Jak paralelizovat iOS CIiOS CI je sériové a minuty macOS jsou drahé.Jak nahrát do TestFlight z CINahrávání TestFlight je pomalé a po úspěšném sestavení někdy selže.Jak připnout verze XcodeAktualizace obrazu běžce tiše změnila verzi Xcode a s ní se změnila i vaše sestava.
Windows5
Jak zrychlit Windows CIÚlohy Windows trvají třikrát déle než ekvivalentní úlohy Linuxu.Jak uložit výstup MSBuild do mezipamětiKaždé sestavení překompiluje všechny projekty.Instalace součástí sady Visual Studio v CIChybí požadovaná úloha VS a její instalace trvá patnáct minut.Jak podepsat binární soubory Windows v CIPodepisování Authenticode vyžaduje certifikát, který nesmí být vystaven.Jak paralelizovat testy .NETTesty .NET běží sériově a trvají dvacet minut.
Bezpečnost6
Jak spravovat tajemství v GitHub ActionsTajemství jsou rozptýlena v nastavení úložiště a nikdo neví, co se stále používá.Jak spustit CI běžce ve vašem VPCSestavení musí dosáhnout interní služby, která není veřejně přístupná.Jak dát běžcům statickou IPSlužba třetí strany vyžaduje seznam povolených IP adres a IP adresy hostovaných běžců se neustále mění.Jak spustit bezpečnostní kontroly bez zpomalení CISkenování zranitelnosti přidává minuty ke každému požadavku na stažení.Jak zabezpečit dodavatelský řetězec CIAkce třetích stran jsou spuštěny s přístupem k vašemu úložišti a tajemstvím.Jak posílit oprávnění k pracovnímu postupuKaždý pracovní postup běží s přístupem pro zápis, který nepotřebuje.
Pozorovatelnost10
Jak sbírat metriky běžcůNelze určit, zda je úloha vázána na CPU, paměť nebo disk.Jak sledovat percentily trvání sestaveníPrůměrná doba sestavení vypadá dobře, ale vývojáři si stále stěžují.Jak exportovat stopy CI pomocí OpenTelemetryČasová data CI žijí v odděleném nástroji od zbytku vaší pozorovatelnosti.Jak programově dotazovat data CIPotřebujete data CI v řídicím panelu nebo v týdenním přehledu.Jak spustit týdenní zdravotní zprávu CICI postupně degraduje a nikdo si toho nevšimne, dokud není špatný.Jak upozornit na regrese CIZměna způsobí, že CI o 40 % zpomalí a celé týdny to zůstane bez povšimnutí.Jak se vypořádat s nestálými úlohami CITesty selžou náhodně a lidé to opakují, dokud neprojdou.Jak ladit neúspěšný pracovní postupÚloha selže v CI a funguje všude jinde.Jak nastavit úrovně služeb CINikdo se neshodne na tom, jak rychlá by CI měla být, takže se nikdy neupřednostňuje.Jak vystavit data CI agentům AIAgenti ladící selhání CI mají k dispozici pouze text protokolu.
Měřítko28
Jak škálovat samostatně hostované běžceSamoobslužní běžci buď stojí ve frontě na špičce, nebo sedí nečinně a draze.Jak používat běžecké skupinyJakékoli úložiště může naplánovat úlohy pro libovolného běžce.Jak navrhnout strategii značení běžcůŠtítky rostly organicky a nikdo neví, které použít.Hosted nebo BYOC: jak si vybratNejste si jisti, zda použít hostované běžce nebo nasadit do vlastního cloudu.Jak používat opakovaně použitelné pracovní postupy ve velkém měřítkuPadesát úložišť má padesát mírně odlišných kopií stejného potrubí.Jak koordinovat pracovní postupy napříč repozitářiZměna v jednom úložišti musí spustit sestavení v dalších.Jak vytvořit vlastní obrázky běžcůKaždá úloha stráví minuty instalací stejných nástrojů.Jak bezpečně zavést aktualizace základního obrazuAktualizace základního obrazu přeruší sestavení napříč mnoha repozitáři najednou.Jak zvládnout zatížení CI závislých botůDependabot otevře třicet žádostí o stažení a zvýší náklady na CI.Jak pracovat s limity souběžnostiFronta úloh a není jasné, který limit je závazný.Jak efektivně využívat kontejnerové úlohyKontejnerové úlohy poskytují reprodukovatelnost, ale přerušují ukládání do mezipaměti.Jak správně používat servisní kontejneryTesty při spuštění občas selhávají.Jak postavit jednou a nasadit mnohokrátStejný artefakt je přestavěn pro každé prostředí.Jak strukturovat úlohy nasazeníNasazení jsou pomalé, riskantní a obtížně kontrolovatelné.Jak efektivně spouštět prostředí náhleduKaždý požadavek na stažení čeká na úplné sestavení prostředí.Jak strukturovat sestavení vydáníSestavení verzí je pomalé a občas nereprodukovatelné.Jak publikovat artefakty sestaveníNáklady na ukládání artefaktů rostou a uchovávání nebylo nikdy nakonfigurováno.Jak zvládnout nahrávání velkých artefaktůNahrání výstupu sestavení trvá několik minut.Jak získat přírůstkové sestavení v CICI vždy provádí čisté sestavení, i když váš systém sestavení podporuje přírůstkovou kompilaci.Jak předávat data mezi úlohamiÚlohy potřebují sdílet výstup sestavení a není jasné, jak.Jak dobře používat matrix buildyMatrix se rozrostl a nikdo si nepamatuje, proč jednotlivé kombinace existují.Jak ovládat výbuch matriceMalá změna matice ztrojnásobila počet prací a účet.Jak nastavit velikost běžců pro sestavení JavaHádáte velikost běžce pro sestavení Maven nebo Gradle.Jak nastavit velikost běžců pro testovací sady NodePracovníci Jest nebo Vitest buď hladoví nebo mlátí a vy si nejste jisti, které.Jak nastavit velikost běžců pro testovací sady Pythonupytest běží na jednom jádru, zatímco běžec má osm nečinných.Jak dimenzovat běžce pro stavby RustCargo staví měřítko s jádry, ale není jasné, jak daleko to jde.Jak dimenzovat běžce pro sestavení DockerVybíráte velikost nosiče pro sestavení obrázku.Jak nastavit velikost běžců pro sestavení AndroidSestavy spádových zařízení a testy přístrojů vyžadují velmi odlišné stroje.