Für diejenigendie von der langsamen CI-Ausführung frustriert sind.
Hier sind drei Möglichkeiten, die CI-Ausführung mit GitHub Actions zu beschleunigen.
Die folgenden drei Methoden werden in diesem Artikel vorgestellt.
Jobs können aufgeteilt werden, sodass jeder Job parallel ausgeführt wird.
Zum Beispiel können die Ausführung eines Unit-Tests und die Ausführung eines Linters oft unabhängig voneinander laufen.
Es wäre effizienter, sie in separaten Jobs zu beschreiben, als in einer Reihe in einem einzigen Job.
jobs:. test:. runs-on: ubuntu-22.04 steps:. ... lint: ... runs-on: ubuntu-22.04 steps: ... ...
Es wird empfohlen, Pakete zwischenzuspeichern, um den zeitaufwändigen Paketinstallationsprozess zu überspringen.
Verwenden Sie die offiziellen Aktionen/Cache, um den Cache-Prozess zu implementieren.
In den folgenden Fällen wird npm ci nur ausgeführt, wenn sich das Betriebssystem, die Knotenversion oder die Datei, die die Paketinformationen verwaltet (package-lock.json), ändert, andernfalls wird der Cache verwendet.
- name: cache and restore packages id: cache-npm uses: actions/cache@v4.0.2 with: node_modules path: node_modules key: ${{ runner.os }}-${{ steps.tool_versions.outputs.nodejs }}-${{ hashFiles(‘**/package-lock.json’) }} - name: install npm packages if: steps.cache-npm.outputs.cache-hit ! = ‘true’ run: npm ci shell: bash
Wenn die Ausführung Ihrer Tests lange dauert, können Sie den Prozess beschleunigen, indem Sie die Tests aufteilen und jeden einzelnen parallel ausführen.
Im Fall von Jest können Sie beispielsweise die Matrixstrategie und die Befehlsoption --shard verwenden. Die Matrixstrategie ist eine einfache Möglichkeit, Tests aufzuteilen und parallel auszuführen.
Die Matrixstrategie ist eine Methode zum Ausführen eines Jobs für jeden in einer Variablen innerhalb eines einzelnen Jobs definierten Wert, und --shard ist eine Option zum Aufteilen von Tests.
Mit diesen können Sie einen Workflow wie den folgenden definieren.
jobs: test: runs-on: ubuntu-22.04 strategy: matrix: shard: [1/4, 2/4, 3/4, 4/4] steps: - name: checkout uses: actions/checkout@v3 - name: setup environment uses: ./.github/actions/setup - name: run test run: npx jest --ci --shard=${{ matrix.shard }}
Dadurch werden 4 Jobs parallel ausgeführt, wobei jeder ein Viertel der Tests ausführt.
Ich weiß nicht, ob es außer Jest noch andere Optionen wie --shard gibt, aber die Idee selbst kann auf jede Sprache angewendet werden.
Die folgenden drei Methoden wurden als einfache Möglichkeiten zur Verbesserung der CI-Geschwindigkeit eingeführt.
Aber darüber hinaus können Sie auch größere Läufer und Lauftests nur in Bereichen verwenden, in denen Änderungen vorgenommen wurden. Es gibt viele andere Möglichkeiten, die Geschwindigkeit zu verbessern.
Es wird empfohlen, die Geschwindigkeit nach und nach so weit wie möglich zu verbessern und dabei die verfügbaren zeitlichen und finanziellen Ressourcen zu berücksichtigen.
Das obige ist der detaillierte Inhalt vonEs gibt Möglichkeiten, CI [GitHub-Aktionen] zu beschleunigen, die Sie sofort ausführen können!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!