>웹 프론트엔드 >JS 튜토리얼 >즉시 수행할 수 있는 CI [GitHub Actions] 속도를 높이는 데 도움이 됩니다!

즉시 수행할 수 있는 CI [GitHub Actions] 속도를 높이는 데 도움이 됩니다!

DDD
DDD원래의
2024-12-31 17:52:14444검색

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: ...
    ...

패키지 캐싱 프로세스를 추가합니다.

시간이 많이 걸리는 패키지 설치 프로세스를 건너뛰려면 패키지를 캐시하는 것이 좋습니다.

공식 작업/캐시를 사용하여 캐시 프로세스를 구현합니다.

다음의 경우 OS, 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를 사용할 수 있습니다. 매트릭스 전략은 테스트를 분할하여 병렬로 실행하는 간단하고 쉬운 방법입니다.

매트릭스 전략은 단일 Job 내의 변수에 정의된 각 값에 대해 Job을 실행하는 방법이고 --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개의 작업을 병렬로 실행하며 각 작업은 테스트의 4분의 1을 실행합니다.

Jest 외에 --shard 같은 다른 옵션이 있는지는 모르겠지만, 아이디어 자체는 어떤 언어에도 적용될 수 있습니다.

다른 방법도 있습니다.

CI 속도를 쉽게 향상시킬 수 있는 방법으로 다음 세 가지 방법을 소개했습니다.

  • 업무 분할
  • 패키지 캐시 처리 추가
  • 테스트를 분할하여 병렬로 실행

그러나 이 외에도 더 큰 런너를 사용할 수도 있고 변경된 영역에서만 런닝 테스트를 수행할 수도 있으며 속도를 향상시킬 수 있는 다른 방법도 많이 있습니다.

사용 가능한 시간과 금전적 자원을 인지하면서 가능한 한 조금씩 속도를 높이는 것이 좋습니다.

위 내용은 즉시 수행할 수 있는 CI [GitHub Actions] 속도를 높이는 데 도움이 됩니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.