느린 CI 실행으로 답답함을 느끼시는 분들
GitHub Actions를 사용하여 CI 실행 속도를 높이는 세 가지 방법이 있습니다.
본 글에서는 다음 세 가지 방법을 소개합니다.
각 작업이 병렬로 실행되도록 작업을 분할할 수 있습니다.
예를 들어 단위 테스트 실행과 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!