GitHub Actions를 사용한 초고속 반응/노드 앱 테스트
초기 조사
GitHub 작업(그리고 이것은 광고가 아님을 약속드립니다)에는 작업의 각 단계에 소요된 시간(초)을 확인할 수 있는 편리한 기능이 있습니다.
내가 가장 먼저 발견한 것은 npm 모듈을 설치하는 데 걸리는 시간이었습니다. 거의 3분이었습니다! 이 때문에 모듈 설치를 복제할 필요가 없도록 Test와 Lint 파이프라인을 결합하기로 했습니다.
둘째, 일반 명령
npm ci
을 다른 작업bahmutov/npm-install@v1
으로 교체했습니다. 이 작업은 빌드 전체에서 노드 모듈의 모든 캐시 무효화 및 저장을 처리하므로 설치 시간을 절약할 수 있습니다. 변경 후 타이밍은 다음과 같습니다.시간이 절반이나 가버렸어! 그것은 좋은 시작이지만 아직 충분하지 않습니다. CI 프로세스에서 필요하지 않은 이미지 최적화를 담당하는 Webpack 플러그인으로 인해 모듈을 설치하는 데 시간이 오래 걸린다는 것을 알았습니다. 나는 이것을
optionalDependencies
로 옮긴 다음 명령을 npm ci --no-optional
로 설정했습니다.ESLint
튀겨야 할 다른 큰 물고기는 ESLint였으며 실행하는 데 거의 2:30분이 걸렸습니다. 환경 변수
TIMING=1
를 사용하여 로컬에서 디버깅을 시도했습니다. 이것은 각 ESLint 규칙이 확인하는 데 걸린 시간을 테이블 보기로 제공합니다.흥미롭게도 가장 오래 걸린 것은
import/
규칙이었습니다. 코드베이스 전체에서 일부 google-fuI discovered that it was due to having to build a dependency graph 후. 우리의 코드베이스는 상당히 크기 때문에 이렇게 오래 걸리는 이유를 이해할 수 있었습니다. 유용했기 때문에 규칙을 완전히 제거하고 싶지는 않았지만 확실히 우회할 방법이 있었습니다…구출 조치! 다행히 친절한 인터넷 사용자가 변경된 파일에서만 ESLint를 실행하는 github 작업을 만들었습니다. 이렇게 교환했습니다
- uses: tinovyatkin/action-eslint@v1
with:
repo-token: ${{secrets.GH_TOKEN}}
check-name: eslint
이것은 스캐닝 글로브와 일치하는 파일이 변경되지 않은 경우 소요되는 시간을 완전히 제거했습니다.
거기에서 나는 시간을 줄이려고 노력하는 것을 인정하는 것보다 더 많은 시간을 보냈습니다. 주요 방해 요소는 종속성 설치(평균 1:20초)와 Jest 테스트 스위트(평균 50초)였습니다. run the Jest suite in parallel 방법이 있지만 이 단계에서는 일종의 중복으로 보입니다. 설치는 큰 작업이지만 불행한 전투는 Webpack 이미지 로더가
devDependency
로 있다는 것입니다. 그런 다음 소스에서 빌드되는 전체 바이너리 패키지 호스트를 설치합니다. 하나의. 시각. 어쨌든, 나는 그것을 76%로 줄여서 기쁩니다.내 주요 내용은 다음과 같습니다.
이것이 CI 속도를 높이는 여정에 도움이 되기를 바랍니다.
Reference
이 문제에 관하여(GitHub Actions를 사용한 초고속 반응/노드 앱 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joshghent/super-fast-react-node-app-testing-with-github-actions-5l7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)