Porównanie
Runnery CRACI a runnery hostowane przez GitHub
Proszę zachować GitHub Actions i zmienić maszynę, na której działają Państwa zadania. Buildy kończą się około dwa razy szybciej, każda minuta kosztuje mniej, a każdy build pozostawia zapis tego, co pobrał.
Zaktualizowano
Te same workflow, szybszy runner
Jeśli używają Państwo GitHub Actions, Państwa zadania działają na runnerach hostowanych przez GitHub, chyba że skonfigurowali Państwo własne. Są wygodne: każde zadanie otrzymuje świeżą maszynę wirtualną, nie ma czego obsługiwać, a do dyspozycji są Linux, Windows i macOS.
CRACI to runner zgodny z GitHub Actions. Wystarczy zainstalować CRACI GitHub App w organizacji, na wszystkich lub wybranych repozytoriach, i zmienić jeden wiersz w workflow:
runs-on: craci
Pliki workflow, akcje i interfejs GitHub pozostają bez zmian. CRACI zastępuje runner, a nie GitHub Actions, i daje Państwu trzy rzeczy, których nie daje runner ogólnego przeznaczenia: szybsze buildy, niższy rachunek i bezpieczeństwo łańcucha dostaw wbudowane w maszynę wykonującą zadanie.
| Funkcja | CRACI | Runnery hostowane przez GitHub |
|---|---|---|
| Szybkość buildu | Około 2x szybciej | Punkt odniesienia |
| Koszt 10-minutowego buildu | $0.020 przy 2x większej szybkości | $0.060 |
| Cena za minutę, 2 vCPU Linux x64 | $0.004 | $0.006 |
| Rozliczanie | Co sekundę | Każde zadanie zaokrąglane w górę do pełnej minuty |
| Rejestruje, co pobrał każdy build | SBOM dla każdego zadania, ze stanem kompletności | Graf zależności odczytuje pliki repozytorium |
| Polityka ruchu wychodzącego buildu | Dla każdego zadania, domyślna odmowa lub zezwolenie, blokuje w razie błędu | Prywatna sieć Azure na większych runnerach |
| Podpisane dane o pochodzeniu artefaktów | Brak podpisanych danych o pochodzeniu | Atestacje Sigstore, SLSA Build Level 2 lub 3 |
| Runnery Windows i macOS | Dziś Linux na x86-64 i ARM64; Windows i macOS w planach rozwoju | |
| Wliczone darmowe minuty | Płatność za minutę od pierwszej minuty, bez opłaty miesięcznej | Od 2000 do 50 000 miesięcznie; bezpłatnie w repozytoriach publicznych |
| Konfiguracja | Instalacja CRACI GitHub App, zmiana runs-on na craci | Wbudowane, na przykład ubuntu-latest |
- W zestawie
- Częściowo
- Brak
- W planach rozwoju
Szybkość
Buildy w CRACI kończą się w około połowę krótszym czasie niż na standardowych runnerach hostowanych przez GitHub. Składają się na to trzy rzeczy: szybszy sprzęt, krótsze kolejki przed startem zadania i cache.
To, o ile szybsze będą Państwa buildy, zależy od obciążenia. Najwięcej zyskują kompilacje i zestawy testów obciążające procesor; mniej zyskują zadania, które większość czasu czekają na sieć lub usługi zewnętrzne. Pomagają w tym:
- rozmiary runnerów od 1 do 32 jednostek obliczeniowych, dzięki czemu ciężkie zadania mogą zażądać więcej,
- natywne x86-64 i ARM64, dzięki czemu buildy ARM nie wymagają emulacji,
- obsługa cache GitHub Actions oraz Docker Engine, Buildx i Compose v2 w każdym zadaniu,
- zagnieżdżona wirtualizacja na x86-64 dla zadań uruchamiających własne maszyny wirtualne.
Najlepszym testem jest własny pipeline: wystarczy przenieść jedno zadanie i porównać czasy obok siebie w GitHub.
Koszt
Rachunek obniżają jednocześnie dwie rzeczy. Każda minuta jest tańsza, a szybszy build zużywa ich mniej.
CRACI rozlicza $0.002 za minutę vCPU, naliczane co sekundę, więc standardowy runner Linux 2 vCPU kosztuje $0.004 za minutę. GitHub podaje dla standardowego 2-rdzeniowego runnera Linux x64 cenę $0.006 za minutę, więc minuta CRACI kosztuje o około 33% mniej.
10-minutowy build
Weźmy build, który trwa 10 minut na 2-rdzeniowym runnerze hostowanym przez GitHub:
| Funkcja | CRACI | Runnery hostowane przez GitHub |
|---|---|---|
| Czas buildu | 5 minut | 10 minut |
| Cena za minutę | $0.004 | $0.006 |
| Koszt buildu | $0.020 | $0.060 |
| 1000 buildów miesięcznie | $20 | $60 |
| Różnica | Około 67% mniej, czyli 3 razy taniej |
Sama różnica w cenie daje oszczędność około 33%. Krótszy build podnosi ją do około 67%. Jeśli build nie jest szybszy przy Państwa obciążeniu, nadal płacą Państwo niższą cenę za minutę.
Co jeszcze zmienia rachunek
- Zaokrąglanie. GitHub zaokrągla każde zadanie w górę do pełnej minuty; CRACI nalicza co sekundę. Zadanie trwające 10 minut i 20 sekund jest w GitHub rozliczane jako 11 minut, a pipeline'y z wieloma krótkimi zadaniami (lint, fragmenty testów, kontrole) płacą za wiele niewykorzystanych sekund.
- Wliczone minuty. GitHub wlicza od 2000 do 50 000 minut miesięcznie zależnie od planu, a w repozytoriach publicznych standardowe runnery są bezpłatne. CRACI nie ma planu darmowego ani wliczonych minut: płacą Państwo za minutę buildu od pierwszej minuty, bez opłaty miesięcznej. W ramach limitu GitHub koszt krańcowy wynosi tam zero.
- Architektura i rozmiar. CRACI stosuje tę samą stawkę dla ARM64 i x86-64. 2-rdzeniowy runner arm64 GitHub kosztuje $0.005 za minutę, więc $0.004 w CRACI to tam o 20% mniej. Przy 32 vCPU CRACI kosztuje $0.064 za minutę, czyli o około 22% mniej niż $0.082 w GitHub na x64, ale 32-rdzeniowy runner arm64 GitHub za $0.050 jest tańszy za minutę niż CRACI. Różni się też pamięć: jednostka obliczeniowa CRACI ma 3 GB RAM na vCPU, a standardowy 2-rdzeniowy prywatny runner GitHub ma 8 GB. Przed porównaniem należy dopasować konfigurację potrzebną buildom.
Aktualne warunki znajdą Państwo w cenniku CRACI.
Bezpieczeństwo łańcucha dostaw w runnerze
Oto, co robi runner CRACI, a do czego runner ogólnego przeznaczenia nie jest zaprojektowany.
Zapis każdej zależności pobranej przez build
W czasie działania każdego zadania proxy rozpoznające pakiety rejestruje ruch do źródeł pakietów: npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk i Git, a także presetów pobierania. Dowody przemieszczają się razem z cache CI, więc pakiety przywrócone z cache nadal są liczone. Każde zadanie tworzy SBOM w formacie CycloneDX lub SPDX ze stanem kompletności dla każdego zadania i każdego cache.
Graf zależności GitHub powstaje z manifestów i lockfile w repozytorium i można go eksportować jako SPDX. Opisuje repozytorium, a nie konkretny build.
Kontrola nad tym, do czego build ma dostęp
Polityki ruchu wychodzącego CRACI działają w trybie domyślnej odmowy lub domyślnego zezwolenia, z 24 wbudowanymi presetami źródeł oprogramowania, typowanymi źródłami niestandardowymi dla npm, PyPI, apt, apk, proxy Go, Nix, Cargo, rejestrów OCI i Git oraz jawnymi regułami TLS, TCP, UDP i ICMP. Polityki są walidowane przed startem zadania, blokują w razie błędu i wysyłają alert przy naruszeniu. Przy polityce domyślnej odmowy przejęta zależność, która próbuje połączyć się z nieoczekiwanym hostem, zostaje zatrzymana na runnerze.
Większe runnery GitHub oferują statyczne adresy IP i prywatną sieć Azure, które pozwalają zarządzać dostępem wychodzącym przez własną sieć Azure. To przydatne i to inne podejście: konfiguracja sieci w Azure zamiast polityki dołączonej do zadania.
Dane o pochodzeniu
API zwraca SBOM-y, ślady sieciowe i dane o pochodzeniu. CRACI nie podpisuje danych o pochodzeniu i nie deklaruje żadnego poziomu SLSA.
GitHub oferuje artifact attestations oparte na Sigstore, które według GitHub zapewniają SLSA v1.0 Build Level 2 samodzielnie, a Level 3 z reusable workflows. Jeśli podpisane dane o pochodzeniu lub formalny poziom SLSA są dla Państwa wymogiem, przemawia to na korzyść GitHub.
Izolacja i lokalizacja danych
Zadania CRACI działają w izolowanych maszynach wirtualnych. W planie Enterprise CRACI oferuje przechowywanie danych w UE, z wykonywaniem buildów na europejskiej infrastrukturze bare metal.
Kiedy pozostać przy runnerach hostowanych przez GitHub
- Potrzebują Państwo runnerów Windows lub macOS. CRACI obsługuje dziś tylko Linuksa; Windows i macOS są w planach rozwoju.
- Państwa repozytoria są publiczne, a standardowe runnery wystarczają bezpłatnie.
- Państwa użycie mieści się we wliczonych minutach planu.
Wiele zespołów łączy oba rozwiązania: zadania buildów i testów Linux w CRACI, a zadania macOS i Windows w GitHub.
Ponieważ zmiana sprowadza się do etykiety runs-on, można przenosić jedno zadanie naraz.
Więcej o integracji CI/CD i generowaniu SBOM w czasie buildu. Startupy mogą zgłosić się do programu dla startupów, który obejmuje co najmniej 100 000 darmowych minut buildu.
Proszę wypróbować na jednym workflow
Wystarczy zmienić runs-on w jednym zadaniu, uruchomić je i porównać czas buildu, rachunek oraz SBOM.
Umów demo