首頁 >web前端 >js教程 >加速 CI [GitHub Actions],您可以立即完成!

加速 CI [GitHub Actions],您可以立即完成!

DDD
DDD原創
2024-12-31 17:52:14417瀏覽

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

對於那些因 CI 執行緩慢而感到沮喪的

以下是使用 GitHub Actions 加速 CI 執行的三種方法。

加速 CI 的三種方法 [GitHub Actions]。

本文介紹了以下三種方法。

  • 分工
  • 新增包快取處理
  • 分割測試並並行運行它們

拆分工作

可以分割作業,以便每個作業並行運行

例如,單元測試的執行和 Linter 的執行通常可以獨立運作。

在單獨的 Job 中描述它們會比在單一 Job 中連續描述它們更有效。

jobs:.
  test:.
    runs-on: ubuntu-22.04
    steps:.
    ...

  lint: ...
    runs-on: ubuntu-22.04
    steps: ...
    ...

新增包緩存過程。

建議快取軟體包,以跳過耗時的軟體包安裝過程

使用官方的actions/cache來實現快取流程

以下情況,只有作業系統、Node 版本或管理套件資訊的檔案(package-lock.json)發生變化時,才會執行 npm ci,否則會使用快取。

- 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

拆分並並行運行測試

如果您的測試需要很長時間才能運行,您可以透過劃分測試並並行運行每個測試來加快進程

例如,對於 Jest,您可以使用矩陣策略和命令選項 --shard。矩陣策略是一種分割測試並並行運行它們的簡單方法。

矩陣策略是一種為單一作業中變數中定義的每個值執行作業的方法,而 --shard 是分割測驗的選項。

使用這些,您可以定義以下工作流程。

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 }}

這將並行運行 4 個作業,每個作業運行四分之一的測試

我不知道除了 Jest 之外是否還有其他選項,例如 --shard,但這個想法本身可以應用於任何語言。

還有其他方法。

以下介紹了三種方法作為提高 CI 速度的簡單方法。

  • 分工
  • 新增包快取處理
  • 分割測試並並行運行它們

但是,除了這些之外,您還可以使用更大的運行器並僅在已進行更改的區域運行測試,還有許多其他方法可以提高速度。

建議在考慮到可用的時間和財力的情況下,盡可能地提高速度。

以上是加速 CI [GitHub Actions],您可以立即完成!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn