CircleCI начинает выполнять шаги параллельно после количества шагов - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть config.yaml для моего рабочего процесса CirleCI.

Я использую PHPUnit для запуска своих тестов, но я бы хотел запустить их параллельно, используя Circle, чтобы ускорить процесс развертывания.

Итак BuildJob выглядит так:

jobs:
  #  build-job
  build-job:
    <<: *defaults  
    resource_class: large
    steps:
      - checkout
      - run: sudo apt install -y libsqlite3-dev zlib1g-dev libpng-dev libxml2-dev
      - run: sudo docker-php-ext-install zip
      - run: sudo docker-php-ext-install gd
      - run: sudo docker-php-ext-install soap
      - run: sudo docker-php-ext-install bcmath
      - run: sudo composer self-update
      - restore_cache:
          keys:
            - composer-v1-{{ checksum "composer.lock" }}
            - composer-v1-
      - run: composer install -n --prefer-dist
      - save_cache:
          key: composer-v1-{{ checksum "composer.lock" }}
          paths:
            - vendor
      - restore_cache:
          keys:
            - node-v1-{{ checksum "package.json" }}
            - node-v1-
      - run: 
          name: Create sqlite db
          command: touch database/database.sqlite
      - run: 
          name: Run tests
          command: ./vendor/bin/phpunit -d memory_limit=512M
      - persist_to_workspace:
          root: ~/laravel
          paths: .

Так что я знаю, что мне нужно добавить туда parallelism: 4 перед шагами для их параллельного запуска, как задокументировано здесь , но мне нужны шаги до Run tests по порядку. Затем у меня будет несколько шагов для запуска тестов, чтобы попасть в каждую папку тестов.

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 01 декабря 2018

Обычный подход использования команды CLI CircleCI circleci tests split для разделения тестов на параллельные контейнеры не работает с phpunit, согласно этому обсуждению (https://discuss.circleci.com/t/how-to-execute-phpunit-tests-in-parallel/25622). Однако, как говорит @matfax, можете ли вы запустить тесты в нескольких логических группах? Что-то вроде

./vendor/bin/phpunit tests/ThisGroup
./vendor/bin/phpunit tests/ThatGroup

Если это так, вы можете запустить каждую из этих команд в параллельном задании в рабочем процессе CircleCI.

...