CircleaCI에서 비동기식 테스트 수행

4764 단어 CircleCI

개시하다


push 시 Circleci로 테스트를 진행하고 테스트가 끝난 후 1초가 빨라도 좋으므로 백그라운드 모드로 향후 처리와 무관한 테스트를 진행하여 비동기화 테스트를 진행하였다.
환경을 이용하다
CircleCI Enterprise version 2.0

병렬 실행 가능한 테스트


CircleaCI 테스트를 진행할 때 항상 이런 절차에 따라 테스트를 진행하죠.실제로 이 외에도 테스트용 컨테이너와 DB 컨테이너 등의 처리를 시작해야 하는데 여기서 생략한다.

잘 생각해 보면 린과 단원 테스트는 독립된 관계이기 때문에 라이트를 하면서 평행으로 DB 이전을 할 수 있을 것이다.

Background 옵션을 통한 병렬화


CircleaCI의 경우 라이트 작업과 유닛 테스트 작업을 분리해 병행 테스트할 수 있지만 무료 계획이라면 병행 실행할 수 없으며medium 실례(표준 사이즈)는 2vCPU가 분배되어 1개 작업에서 병행화하려고 한다.
버젼2.1은 잘할 수 있을지 모르지만 안타깝게도 이용한CircleaCI는 2.0에 불과하다.
공교롭게도 CircleaCI는 작업 중에 처리를 병행화하는 기능이 없다.단, 백그라운드 옵션을 사용하면 명령이 끝날 때까지 기다리지 않고 다음 단계로 들어갑니다.정말 이름과 같이 상주 프로그램을 시작하는 데 사용할 옵션이지만 병렬 처리에도 사용할 수 있습니다.
Background commands
Litt를 실행하기 위해서는 composier install, bundle install 등 소프트웨어 패키지를 설치해야 합니다.DB 마이그레이션은 필요 없습니다.다른 한편, 단원 테스트는Litt가 끝낼 필요가 없지만 설치 봉인 외에 DB 이전을 완료해야 한다.그러니까 이런 순서대로 집행하면 된다는 거야.

config.yml 수정


그럼 실제로는 config입니다.yml를 수정해 보세요.config.yml에서 테스트 부분을 발췌하였다.
config.yml
      - run:
          name: Waiting for DB connection
          command: dockerize -wait tcp://cidb:3306 -timeout 120s
      - run: mkdir -p ~/reports/coverage
      - run: composer cs-check-report > ~/reports/cs-check-results.xml # ←ここをbackground処理にしたい
      - run: php artisan migrate --database=cidb --path=database/migrations/foobar --seed
      - run: ./vendor/bin/phpunit -c ./phpunit.ci.xml --coverage-html ~/reports/coverage tests/
백그라운드 처리로 변경하려면run 명령의 디렉터리에 백그라운드를 추가하십시오.이 예에서는 이렇다.
config.yml
      - run:
          name: Waiting for DB connection
          command: dockerize -wait tcp://cidb:3306 -timeout 120s
      - run: mkdir -p ~/reports/coverage
      - run:
          command: composer cs-check-report > ~/reports/cs-check-results.xml
          background: true # ←バックグラウンド処理にした
      - run: php artisan migrate --database=cidb --path=database/migrations/foobar --seed
      - run: ./vendor/bin/phpunit -c ./phpunit.ci.xml --coverage-html ~/reports/coverage tests/
이 설정을 실행하면 composer cs-check-report 를 실행하는 동시에 다음 php artisan migrate 을 시작합니다.
죄송하지만 이해하기 어려운 그림입니다. composer cs-check-report 실행 중 (옅은 파란색), php artisan migrate 완성 (녹색), 알 수 있습니까?출력 디스플레이의 오른쪽 위 모서리는 Exit code 출력이 없어도 알 수 있습니다.

주의점


백그라드 원래와는 사용법이 다르기 때문에 주의가 필요하다.명령이 완료될 때까지 기다리지 않고 진행하기 때문에 테스트 결과와 관련된 처리가 있으면 사용할 수 없습니다.예를 들어 테스트 결과를artifact로 업로드하는 처리 등이다.또 성공 여부와 관계없이 다음 테스트로 넘어가기 때문에 어떤 테스트에서 실패하면 그 자리에서 끝내려고 하는 경우엔 적합하지 않다.

좋은 웹페이지 즐겨찾기