Heim > Web-Frontend > js-Tutorial > Es gibt Möglichkeiten, CI [GitHub-Aktionen] zu beschleunigen, die Sie sofort ausführen können!

Es gibt Möglichkeiten, CI [GitHub-Aktionen] zu beschleunigen, die Sie sofort ausführen können!

DDD
Freigeben: 2024-12-31 17:52:14
Original
428 Leute haben es durchsucht

ays to speed up CI [GitHub Actions] that you can do immediately!

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.

Drei Möglichkeiten, CI [GitHub Actions] zu beschleunigen.

Die folgenden drei Methoden werden in diesem Artikel vorgestellt.

  • Aufteilung des Jobs
  • Paket-Cache-Verarbeitung hinzufügen
  • Tests aufteilen und parallel ausführen

Teilen Sie einen Job auf

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: ...
    ...
Nach dem Login kopieren

Paket-Caching-Prozess hinzufügen.

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
Nach dem Login kopieren

Teilen Sie Tests auf und führen Sie sie parallel aus

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 }}
Nach dem Login kopieren

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.

Es gibt andere Möglichkeiten.

Die folgenden drei Methoden wurden als einfache Möglichkeiten zur Verbesserung der CI-Geschwindigkeit eingeführt.

  • Aufteilung des Jobs
  • Paket-Cache-Verarbeitung hinzufügen
  • Tests aufteilen und parallel ausführen

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage