3

Я использую круг для запуска теста JS и PHP (Protractor/Phpunit).Запуск Phpunit и JS-теста одновременно через CircleCI

Я бы хотел использовать параллелизм, чтобы выиграть время, но я не знаю, как настроить параллельность. Я активирую параллелизм в параметрах круга (2 контейнера).

Моя текущая конфигурация круг (circle.yml):

# Depend de app/config/parameters.circle.yml (parametre symfony pour circle) et app/config/apache.circle (configuration d'Apache pour Circle) 

# Configuration du serveur 
machine: 
    php: 
     version: 5.4.21 
    timezone: 
     Europe/Paris 
    hosts: 
     bluegrey.circle.dev: 127.0.0.1 

dependencies: 
    pre: 
     # SauceConnect (Angular) 
     - wget https://saucelabs.com/downloads/sc-latest-linux.tar.gz 
     - tar -xzf sc-latest-linux.tar.gz 
     - ./bin/sc -u johnnyEvo -k xxx: 
      background: true 
      pwd: sc-*-linux 
     # Installation protractor (Angular) 
     - npm install -g protractor 
     # On active XDebug 
     - sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/xdebug.ini 
     - echo "xdebug.max_nesting_level = 250" > ~/.phpenv/versions/$(phpenv global)/etc/conf.d/xdebug.ini 
     # Configuration d'Apache 
     - cp app/config/apache.circle /etc/apache2/sites-available 
     - a2ensite apache.circle 
     - sudo service apache2 restart 
    override: 
     # Composer 
     - composer install --prefer-source --no-interaction 
    post: 
     # Assets 
     - app/console assetic:dump 
     # Parameters 
     - cp app/config/parameters.circle.yml.dist app/config/parameters.yml 

database: 
    pre: 
     # Base de données (test) 
     - app/console doctrine:database:create --env=test --no-interaction 
     - app/console doctrine:schema:update --force --env=test --no-interaction 
     # Base de données (prod/ angular) 
     - app/console doctrine:database:drop --no-interaction --force 
     - app/console doctrine:database:create --no-interaction 
     - app/console doctrine:schema:update --force --no-interaction 
     # Fixture 
     - app/console doctrine:fixture:load --no-interaction 


test: 
    pre: 
     # Permission pour que Protractor puisse naviguer le site 
     - sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs app/sessions 
     - sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs app/sessions 
    override: 
     - php -d memory_limit=-1 bin/phpunit -c app 
     - protractor angutest 

Спасибо

ответ

4

Я один из дэвов CircleCI.

Самый простой способ - запустить тесты PHP на одном контейнере и тесты JS на другом, если они имеют примерно одинаковые сроки выполнения, тогда вы получите преимущество без необходимости ручного разделения наборов тестов.

Что-то вроде следующего будет работать в этом случае:

test: 
    override: 
    - case $CIRCLE_NODE_INDEX in 0) php -d memory_limit=-1 bin/phpunit -c app ;; 1) protractor angutest ;; esac: 
     parallel: true 
+0

Она также должна быть параллельна конфигурации апача и разрешение на запись и это работает! Спасибо :) – johnnyevolunium

Смежные вопросы