Przejdź do treści

runnerhut

Poradniki

Rozwiązania problemów CI, które zespoły faktycznie napotykają.

Prędkość13

Jak przyspieszyć GitHub ActionsTwój rurociąg trwa dłużej, niż ktokolwiek chciałby czekać, i nie jest oczywiste, kiedy ten czas upływa.Jak znaleźć powolny krok w przepływie pracyRurociąg jest powolny, ale każdy pojedynczy krok wygląda rozsądnie.Jak ograniczyć GitHub Actions zimne startyZadania pozostają od 30 do 90 sekund przed uruchomieniem pierwszego kroku.Jak zdiagnozować GitHub Actions czasy kolejekZadania czekają w kolejce przez kilka minut, zanim biegacz je odbierze.Jak przyspieszyć realizację transakcji gitdziałania/zamówienie zajmuje kilka minut w dużym repozytorium.Jak uruchomić CI na bardzo dużym repozytoriumKasowanie, indeksowanie i raportowanie statusu pogarszają się wraz z rozwojem repozytorium.Jak przyspieszyć realizację transakcji Git LFSObiekty LFS są pobierane seryjnie i dominują w czasie realizacji transakcji.Jak wyeliminować przestoje w pracyJobs spędza czas na nic nierobieniu — czekaniu na usługę, uśpieniu lub pętli ankiet.Jak sobie radzić z długotrwałymi zadaniamiNiektóre zadania trwają godzinami i czasami przekraczają limit sześciu godzin.Jak efektywnie uruchamiać kompilacje nocneNocne kompilacje są drogie i nikt nie czyta wyników.Jak zatrzymać burze ponownego uruchomienia CIProgramiści wielokrotnie uruchamiają nieudane zadania, mnożąc koszty i ukrywając prawdziwe awarie.Jak podzielić testy na macierzW potoku dominuje jedno długie zadanie testowe.Jak uruchomić tylko te testy, których dotyczy zmianaKażde naciśnięcie uruchamia cały zestaw testów niezależnie od tego, co się zmieniło.

Koszt13

Jak zmniejszyć koszty GitHub ActionsRachunek CI rośnie szybciej niż zespół i nikt nie jest pewien dlaczego.Jak zmierzyć koszt CI na żądanie ściągnięciaZnasz miesięczną sumę, ale nie wiesz, ile kosztuje pojedyncze żądanie ściągnięcia.Jak przypisać koszty CI do zespołówWydatki na CI stanowią jedną linię na fakturze i żaden zespół nie czuje się za nie odpowiedzialny.Jak ustawić budżet minut CIWydatki są odkrywane pod koniec miesiąca, a nie kontrolowane w jego trakcie.Kiedy więksi biegacze faktycznie oszczędzają pieniądzeWiększy biegacz kosztuje więcej za minutę, więc nie jest jasne, czy ogólnie jest tańszy.Jak obniżyć koszty uruchamiania systemu macOSmacOS dominuje na rachunku CI.Jak zmniejszyć koszty wyjścia CITransfer danych stanowi dużą i rosnącą część rachunku BYOC.Jak obniżyć koszty ściągania ECRPobieranie obrazów kontenerów generuje znaczne opłaty za transfer danych.Jak obniżyć koszty transferu S3 w CIRuch pamięci podręcznej i artefaktów do S3 jest kosztowny.Prawdziwy koszt biegaczy hostowanych samodzielnieBiegacze korzystający z własnego hostingu wyglądają bezpłatnie przy rozliczeniu minutowym.Jak korzystać z instancji punktowych dla biegaczy CIWystąpienia na żądanie są drogie w przypadku obciążeń, które z natury można ponawiać.Jak prawidłowo dobrać rozmiar swoich biegaczyRozmiary biegaczy zostały wybrane raz i nigdy nie były ponownie sprawdzane.Jak ekonomicznie uruchomić CI na otwartym kodzie źródłowymCI typu open source jest bezpłatne w przypadku modułów uruchamiających hostowanych na GitHubie, ale jest powolne, a samodzielne hostowanie jest niebezpieczne.

Buforowanie16

Jak sprawić, by pamięci podręczne CI faktycznie przetrwałyPamięci podręczne są skonfigurowane, ale współczynnik trafień jest niski.Jak obejść limit 10 GB pamięci podręcznejTwoje pamięci podręczne przekraczają 10 GB na repozytorium i zaczynają dyskretnie eksmitować.Jak udostępnić pamięć podręczną kompilacji pomiędzy repozytoriamiKażde repozytorium utrzymuje własną pamięć podręczną dla tych samych współużytkowanych zależności.Jak współdzielić pamięć podręczną Docker pomiędzy zadaniamiKażda noga matrycy odbudowuje te same warstwy.Jak naprawić unieważnienie pamięci podręcznej DockerWarstwy Docker odbudowują się nawet wtedy, gdy odpowiednie pliki nie uległy zmianie.Jak napisać klucz pamięci podręcznej, który trafiaPamięć podręczna jest skonfigurowana, ale brakuje jej przy każdym uruchomieniu.Jak używać ccache w GitHub ActionsKompilacje C i C++ rekompilują wszystko przy każdym uruchomieniu.Jak używać sccache do kompilacji RustCargo odbudowuje zależności, gdy brakuje pamięci podręcznej katalogu docelowego.Jak włączyć pamięć podręczną konfiguracji GradleGradle spędza od 30 do 60 sekund na konfigurowaniu przed kompilacją czegokolwiek.Jak buforować menedżerów łańcucha narzędzimise, asdf lub proto instalują ponownie środowiska wykonawcze języka przy każdym uruchomieniu.Jak buforować pakiety NuGetdotnet Restore pobiera te same pakiety przy każdym uruchomieniu.Jak buforować transformacje JestJest ponownie przekształca każdy plik przy każdym uruchomieniu.Jak buforować pakiety vcpkg i ConanMenedżerowie zależności C++ odbudowują pakiety ze źródła przy każdym uruchomieniu.Jak buforować dane pochodne XcodeXcode przebudowuje cały projekt przy każdym uruchomieniu CI.Wybór zaplecza pamięci podręcznej buildxIstnieją cztery backendy pamięci podręcznej i nie jest jasne, którego użyć.Jak utrzymać ciepło pamięci podręcznej gałęzi podstawowejNowe gałęzie funkcji zawsze zaczynają się od zimnej pamięci podręcznej.

Skala28

Jak skalować biegaczy hostowanych na własnym serwerzeBiegacze z własnym hostingiem albo ustawiają się w kolejce w godzinach szczytu, albo siedzą bezczynnie i są kosztowni.Jak korzystać z grup biegaczyKażde repozytorium może planować zadania na dowolnym biegaczu.Jak zaprojektować strategię dotyczącą etykiet biegowychEtykiety rosły organicznie i nikt nie wiedział, których użyć.Hostowane lub BYOC: jak wybraćNie masz pewności, czy skorzystać z hostowanych modułów biegaczy, czy wdrożyć je we własnej chmurze.Jak korzystać z przepływów pracy wielokrotnego użytku na dużą skalęPięćdziesiąt repozytoriów ma pięćdziesiąt nieco różnych kopii tego samego potoku.Jak koordynować przepływy pracy w repozytoriachZmiana w jednym repozytorium musi wywołać kompilację w innym.Jak tworzyć niestandardowe obrazy biegaczyKażda praca wymaga kilku minut na zainstalowanie tych samych narzędzi.Jak bezpiecznie wdrażać aktualizacje obrazu podstawowegoAktualizacja obrazu podstawowego przerywa kompilacje w wielu repozytoriach jednocześnie.Jak obsługiwać obciążenie CI bota zależnościZależność otwiera trzydzieści żądań ściągnięcia i skoki kosztów CI.Jak pracować z limitami współbieżnościZadania stoją w kolejce i nie jest jasne, który limit jest wiążący.Jak efektywnie wykorzystywać zadania konteneroweZadania kontenera zapewniają powtarzalność, ale przerywają buforowanie.Jak prawidłowo korzystać z kontenerów usługowychTesty czasami kończą się niepowodzeniem przy uruchomieniu.Jak zbudować raz i wdrożyć wiele razyTen sam artefakt jest odbudowywany dla każdego środowiska.Jak zorganizować zadania wdrożenioweWdrożenia są powolne, ryzykowne i trudne do kontrolowania.Jak efektywnie uruchamiać środowiska podgląduKażde żądanie ściągnięcia czeka na kompilację pełnego środowiska.Jak strukturyzować kompilacje wydańKompilacje wydań są powolne i czasami niemożliwe do odtworzenia.Jak publikować artefakty kompilacjiKoszty przechowywania artefaktów rosną, a przechowywanie nigdy nie zostało skonfigurowane.Jak obsługiwać przesyłanie dużych artefaktówPrzesyłanie wyników kompilacji zajmuje kilka minut.Jak uzyskać przyrostowe kompilacje w CICI zawsze wykonuje czystą kompilację, nawet jeśli Twój system kompilacji obsługuje kompilację przyrostową.Jak przekazywać dane pomiędzy zadaniamiZadania muszą udostępniać wyniki kompilacji i nie jest jasne, w jaki sposób.Jak dobrze korzystać z matrycMatryca rozrosła się i nikt nie pamięta, dlaczego istnieje każda kombinacja.Jak kontrolować eksplozję matrixaNiewielka zmiana matrycy potroiła liczbę zadań i rachunek.Jak dobrać rozmiar modułów biegaczy dla kompilacji JavaZgadujesz rozmiar biegacza dla kompilacji Maven lub Gradle.Jak dobrać rozmiar modułów biegaczy dla zestawów testów NodePracownicy Jest lub Vitest albo głodują, albo rzucają się i nie jesteś pewien, który.Jak dobrać rozmiar modułów biegaczy dla zestawów testów Pythonapytest działa na jednym rdzeniu, podczas gdy biegacz ma osiem bezczynnych.Jak dobrać rozmiar biegaczy do wersji RustCargo buduje skalę za pomocą rdzeni, ale nie jest jasne, jak daleko to sięga.Jak dobrać rozmiar prowadnic do kompilacji DockerWybierasz rozmiar prowadnicy do budowania obrazu.Jak dobrać rozmiar prowadnic do wersji na AndroidaMontaż Gradle i testy oprzyrządowania wymagają bardzo różnych maszyn.