Abhängigkeiten für mehr Geschwindigkeit cachen
Implementieren Sie Caching, um die Ausführung Ihrer Workflows deutlich zu beschleunigen, indem Sie erzeugte Abhängigkeiten und Build-Ausgaben wiederverwenden.
Abhängigkeiten für mehr Geschwindigkeit cachen ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Workflows mit Caching beschleunigen
Ist Ihnen schon einmal aufgefallen, dass Ihr Workflow jedes Mal dieselben Abhängigkeiten erneut herunterlädt? Das verlangsamt die Ausführung!
Mit dem Caching in GitHub Actions können Sie Dateien aus früheren Ausführungen speichern und wiederverwenden. Dadurch werden nachfolgende Workflow-Ausführungen deutlich beschleunigt.
Die Cache-Action kennenlernen
GitHub stellt eine spezielle Action namens actions/cache@v3 bereit. Diese Action wurde entwickelt, um Dateien zu speichern und wiederherzustellen und Ihre Workflows dadurch schneller zu machen.
Sie arbeitet intelligent: Bevor sie versucht, einen Cache wiederherzustellen, prüft sie, ob dieser bereits vorhanden ist, und speichert ihn, falls dies nicht der Fall ist.
Cache-Schlüssel und -Pfad
Zwei entscheidende Parameter für actions/cache sind key und path:
key: Eine eindeutige Zeichenfolge, die Ihren Cache identifiziert. Wenn ein Cache mit diesem Schlüssel gefunden wird, wird er wiederhergestellt.path: Die Dateipfade oder Verzeichnisse, die Sie cachen möchten. Damit legen Sie fest, *was* gespeichert oder wiederhergestellt werden soll.
Der Schlüssel enthält häufig einen Hash der Abhängigkeitsdateien. So wird sichergestellt, dass der Cache ungültig wird, sobald sich die Abhängigkeiten ändern.
Node.js-Abhängigkeiten cachen
Cachen ist nicht nur für Node.js gedacht! Sie können dasselbe Prinzip auch auf andere Sprachen wie Python anwenden. Hier cachen wir die virtuelle Umgebung von Python und den pip-Cache.
Der Schlüssel verwendet hashFiles, um auf Grundlage von package-lock.json einen dynamischen Schlüssel zu erstellen.
Versuchen Sie, diesen einfachen Workflow-Ausschnitt auszuführen:
name: Node.js CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: node_modules
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm testFallback mit Restore-Schlüsseln
Was ist, wenn Ihr exakter key mit keinem Cache übereinstimmt? Dann kommen restore-keys ins Spiel!
restore-keys stellt eine Liste von Fallback-Schlüsseln bereit, nach denen gesucht wird. Wenn der primäre Schlüssel (z. B. npm-${{ hashFiles(...) }}) nicht gefunden wird, versucht GitHub Actions, mithilfe der restore-keys in der angegebenen Reihenfolge einen Cache zu finden.
In unserem Beispiel sucht npm- nach einem beliebigen Cache, der mit „npm-“ beginnt. Das ist nützlich, wenn sich nur kleinere Abhängigkeitsversionen geändert haben.
Python-Abhängigkeiten cachen
Caching ist nicht nur für Node.js gedacht! Sie können dasselbe Prinzip auch auf andere Sprachen wie Python anwenden. Hier cachen wir die virtuelle Umgebung von Python und den pip-Cache.
Der Schlüssel verwendet hashFiles('requirements.txt'), und der Pfad verweist auf die virtuelle Umgebung sowie das Cache-Verzeichnis von pip.
name: Python CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/pip
.venv
key: pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
pip-
- name: Install dependencies
run: |
python -m venv .venv
.venv/bin/pip install -r requirements.txt
- name: Run tests
run: .venv/bin/python -m unittest discoverCache ungültig machen
Ein Cache ist nur dann nützlich, wenn er aktuell genug ist. Wenn sich Ihre Abhängigkeiten ändern, sollte sich auch Ihr Cache ändern!
Der Cache wird automatisch ungültig, wenn sich Ihr primärer key (z. B. npm-${{ hashFiles('package-lock.json') }}) ändert. Wenn package-lock.json aktualisiert wird, ändert sich der Hash und ein neuer Cache wird erstellt.
Sie können einen Cache auch erzwingen, indem Sie den Schlüssel manuell ändern, etwa durch das Hinzufügen eines Versionssuffixes wie npm-v2-${{ hashFiles(...) }}.
Cache-Gültigkeitsbereich und -Limits
Es ist hilfreich zu wissen, wie Caching im Hintergrund funktioniert:
- Gültigkeitsbereich: Caches gelten pro Repository und pro Branch. Ein Cache im Branch
mainwird nicht in einem Feature-Branch verwendet, sofern Sie nicht ausdrücklichlookup-pathkonfigurieren. - Größenlimit: Jeder Cache kann bis zu 10 GB groß sein.
- Aufbewahrung: Caches werden nach dem letzten Zugriff 7 Tage lang aufbewahrt. Alte, nicht verwendete Caches werden automatisch entfernt.
Intelligente Caching-Praktiken
So holen Sie das Beste aus dem Caching heraus:
hashFilesverwenden: Verknüpfen Sie Ihren Cache-Schlüssel stets mit Manifestdateien für Abhängigkeiten, etwapackage-lock.jsonoderrequirements.txt.- Bei
pathgenau sein: Cachen Sie nur, was notwendig ist, etwanode_modulesoder~/.cache/pip. restore-keysverwenden: Geben Sie Fallbacks an, um die Trefferquote des Caches zu erhöhen.- Flüchtige Daten nicht cachen: Cachen Sie keine Dateien, die sich häufig ändern oder sehr groß und für jede Ausführung einzigartig sind, etwa für das Deployment vorgesehene Build-Artefakte.
Cache-Schlüssel-Herausforderung
Sie haben ein Java-Projekt, das Maven verwendet. Seine Abhängigkeiten sind in pom.xml definiert, und Maven speichert heruntergeladene JAR-Dateien normalerweise in ~/.m2/repository.
Welche Cache-Konfiguration stellt am besten sicher, dass Maven-Abhängigkeiten gecacht und bei Änderungen an pom.xml korrekt ungültig gemacht werden?
Rückblick: Cache für mehr Geschwindigkeit!
Sehr gut! Sie haben gelernt, wie Sie Caching in GitHub Actions implementieren, um Ihre CI/CD-Workflows deutlich zu beschleunigen.
- Die Action
actions/cacheist Ihr Werkzeug dafür. - Verwenden Sie
keyundpath, um festzulegen, was und wie gecacht werden soll. hashFileserstellt dynamische Schlüssel für eine intelligente Ungültigmachung.restore-keysstellt wertvolle Fallbacks bereit.
Indem Sie Abhängigkeiten intelligent cachen, sparen Sie Build-Zeit und Rechenressourcen und machen Ihre Pipelines effizienter!
Häufig gestellte Fragen
Ist die Lektion „Abhängigkeiten für mehr Geschwindigkeit cachen“ kostenlos?
Ja — der vollständige Text von „Abhängigkeiten für mehr Geschwindigkeit cachen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Abhängigkeiten für mehr Geschwindigkeit cachen“?
Implementieren Sie Caching, um die Ausführung Ihrer Workflows deutlich zu beschleunigen, indem Sie erzeugte Abhängigkeiten und Build-Ausgaben wiederverwenden. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Abhängigkeiten für mehr Geschwindigkeit cachen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Matrix-Builds für mehrere Umgebungen
- Abhängigkeiten für mehr Geschwindigkeit cachen
- Wiederverwendbare Workflows und Actions
- Bedingte Ausführung und Job-Abhängigkeiten