Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CircleCI上のフロントエンドテストを30分から10分に短縮した話

 CircleCI上のフロントエンドテストを30分から10分に短縮した話

CircleCI上のテスト実行時間が長くてイライラしているあなた!
誰でも簡単にできるCircleCIの実行時間を短縮する方法を共有します!!!

2021/05/20 【テスト・新機能LT大会編】CircleCI コミュニティミートアップにて登壇した内容になります!
https://circleci.connpass.com/event/211477/

sho kanamaru

May 20, 2021
Tweet

More Decks by sho kanamaru

Other Decks in Technology

Transcript

  1. フロントエンドのディレクトリ構成 app - student - 学生ドメインのコードを管理 - client - 企業ドメインコードを管理

    - writer - ライタードメインコードを管理 - common - 学生、企業共通のドメイン(新規登録、メッセージなど)を管理 - shared - 上記のディレクトリ全てで使用するものの管理(マスターデータなど)
  2. フロントエンドのディレクトリ構成 yarn test app/* yarn test app/student/* yarn test app/client/*

    yarn test app/writer/* yarn test app/common/* yarn test app/shared/* jobを分解して並列で回せば速くなるのでは?
  3. .circleci/config.ymlの修正 frontend_test: steps: - checkout - judge_job_execution: target_directory: project/app -

    run: name: Flow type check command: npm run flow - run: name: TypeScript type check command: npm run tsc - run: name: ESLint and Jest check command: npm run lint && npm run test 変更前 student_frontend_test: steps: - checkout - judge_job_execution: target_directory: project/app/student - run: name: Flow type check command: npm run flow app/student  - run: name: TypeScript type check command: npm run tsc:student - run: name: ESLint and Jest check command: npm run lint app/student && npm run test:student 変更後 student以外も同様にjobを分解する
  4. package.jsonの修正 student以外も同様にscriptsを分解 "test": "cross-env NODE_ENV=test jest --coverage --runInBand --silent", "test:student":

    "cross-env NODE_ENV=test jest --config=./app/student/jest.student.config.js --runInBand --coverage --silent app/student/" 変更前 変更後
  5. さらに・・・ student_frontend_test: steps: - checkout - judge_job_execution: target_directory: project/app/student -

    run: name: Flow type check command: npm run flow app/student  - run: name: TypeScript type check command: npm run tsc:student - run: name: ESLint and Jest check command: npm run lint app/student && npm run test:student 変更後 修正したディレクトリだけテストを回すことが可能!