0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lekcja

Buforowanie zależności na potrzeby szybszych kompilacji

Przyspiesz potoki CI, buforując zależności i artefakty kompilacji za pomocą akcji actions/cache, kluczy i restore-keys.

Buforowanie zależności na potrzeby szybszych kompilacji to bezpłatna lekcja CI/CD with GitHub Actions & DevOps Pipelines na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CI/CD with GitHub Actions & DevOps Pipelines, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CI/CD with GitHub Actions & DevOps Pipelines zawiera 4 lekcji w sumie.

Koszt ponownej instalacji

Większość czasu CI zajmuje pobieranie i instalowanie tych samych zależności przy każdym uruchomieniu. Pamięć podręczna przechowuje je między uruchomieniami, dzięki czemu kolejne kompilacje ponownie wykorzystują wykonaną pracę, często znacznie skracając czas działania potoku.

Akcja cache

GitHub udostępnia actions/cache. Podajesz jej path do zapisania w pamięci podręcznej oraz key identyfikujący wpis pamięci podręcznej. Przy trafieniu ścieżka zostaje przywrócona, a w przeciwnym razie jest zapisywana po zakończeniu zadania.

- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: npm-${{ hashFiles('package-lock.json') }}

Projektowanie dobrego klucza

Klucz powinien zmieniać się tylko wtedy, gdy powinna zmienić się zawartość pamięci podręcznej. Idealnym rozwiązaniem jest haszowanie pliku blokady: nowy plik blokady oznacza nowe zależności, więc zostaje utworzony nowy wpis pamięci podręcznej.

key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}

Klucze przywracania

restore-keys udostępnia zapasowe prefiksy. Jeśli dokładny klucz nie zostanie znaleziony, akcja przywraca najnowszą pamięć podręczną, której klucz rozpoczyna się od danego prefiksu, zapewniając częściowo przygotowany start.

restore-keys: |
  ${{ runner.os }}-npm-

Trafienie i brak trafienia w pamięć podręczną

Przy dokładnym dopasowaniu klucza następuje trafienie w pamięć podręczną i ścieżka zostaje przywrócona. W przypadku braku trafienia zadanie działa normalnie, a pamięć podręczna jest zapisywana na końcu za pomocą głównego klucza i będzie gotowa przy kolejnym uruchomieniu.

Wbudowane buforowanie w akcjach konfigurujących

Akcje konfigurujące język mają wbudowane buforowanie. W przypadku Node akcja setup-node z opcją cache: npm samodzielnie obsługuje pamięć podręczną zależności, więc nie trzeba dodawać osobnego kroku pamięci podręcznej.

- uses: actions/setup-node@v4
  with:
    node-version: 20
    cache: npm

Co zapisywać w pamięci podręcznej

W miarę możliwości zapisuj w pamięci podręcznej katalogi pobierania menedżera pakietów, a nie zainstalowany katalog node_modules, ponieważ pamięci podręczne pobierania są przenośne, a krok instalacji nadal weryfikuje integralność.

  • Node: ~/.npm
  • Python: pamięć podręczna pip
  • Java: ~/.m2 lub pamięci podręczne Gradle

Zakres i limity pamięci podręcznej

Pamięci podręczne są przypisane do gałęzi, z możliwością użycia domyślnej gałęzi jako zapasowej, i mają limit rozmiaru dla każdego repozytorium. Nieużywane pamięci podręczne są z czasem usuwane, dlatego projektuj klucze tak, aby ich rotacja przebiegała prawidłowo.

Unikanie nieaktualnych pamięci podręcznych

Jeśli klucz nigdy się nie zmienia, możesz udostępniać nieaktualne zależności. Zawsze powiąż klucz z haszem pliku blokady, aby aktualizacje automatycznie unieważniały pamięć podręczną.

Macierz i system operacyjny w kluczach

W kompilacjach macierzowych dla różnych systemów operacyjnych lub wersji uwzględnij w kluczu runner.os oraz wersję, aby każdy wariant otrzymał własną poprawną pamięć podręczną zamiast kolidować z innymi.

key: ${{ runner.os }}-node20-${{ hashFiles('package-lock.json') }}

Mierzenie korzyści

Porównaj czasy trwania zadań przed włączeniem pamięci podręcznej i po nim oraz obserwuj wskaźnik trafień w logach. Stale niski współczynnik trafień wskazuje, że klucz zmienia się zbyt często.

Szybki test

Sprawdź swoją wiedzę na temat buforowania zależności.

Podsumowanie

Przyspieszyłeś CI dzięki buforowaniu zależności: akcji actions/cache z kluczem opartym na haszu pliku blokady i zapasowymi kluczami przywracania, wbudowanemu buforowaniu w akcjach konfigurujących, właściwemu wyborowi danych do buforowania, uwzględnieniu systemu operacyjnego i wersji w kluczach macierzy oraz unikaniu nieaktualnych pamięci podręcznych dzięki powiązaniu klucza z plikiem blokady.

Często zadawane pytania

Czy lekcja „Buforowanie zależności na potrzeby szybszych kompilacji” jest bezpłatna?

Tak — pełny tekst „Buforowanie zależności na potrzeby szybszych kompilacji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CI/CD with GitHub Actions & DevOps Pipelines, przejdź na CoddyKit PRO. Kurs CI/CD with GitHub Actions & DevOps Pipelines zawiera 4 lekcji w sumie.

Co nauczysz się w „Buforowanie zależności na potrzeby szybszych kompilacji”?

Przyspiesz potoki CI, buforując zależności i artefakty kompilacji za pomocą akcji actions/cache, kluczy i restore-keys. Ćwiczysz CI/CD with GitHub Actions & DevOps Pipelines z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CI/CD with GitHub Actions & DevOps Pipelines?

Nie wymagamy żadnego doświadczenia. CI/CD with GitHub Actions & DevOps Pipelines w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Buforowanie zależności na potrzeby szybszych kompilacji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CI/CD with GitHub Actions & DevOps Pipelines?

Tak. Każda lekcja CI/CD with GitHub Actions & DevOps Pipelines zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wyzwalacze i zdarzenia workflow
  2. Uruchamianie testów za pomocą GitHub Actions
  3. Lintowanie i kontrola jakości kodu
  4. Buforowanie zależności na potrzeby szybszych kompilacji
← Powrót do CI/CD with GitHub Actions & DevOps Pipelines