【问题标题】:CircleCI start running steps in parallel after number of stepsCircleCI 在步数之后开始并行运行步骤
【发布时间】:2018-11-13 11:22:43
【问题描述】:

我的 CirleCI 工作流程有一个 config.yaml

我使用 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,如here 记录的那样,但我需要按顺序执行直到Run tests 的步骤。然后我将有多个运行测试步骤来访问每个测试文件夹。

有没有办法做到这一点?

【问题讨论】:

  • 首先,parallelism 不是必需的。你只需要定义多个job(你只有一个build-job),并且拆分phpunit的测试范围。

标签: phpunit circleci circleci-2.0


【解决方案1】:

根据这个讨论 (https://discuss.circleci.com/t/how-to-execute-phpunit-tests-in-parallel/25622),使用 CircleCI CLI 命令circleci tests split 为并行容器拆分测试的常用方法不适用于 phpunit。但是,正如@matfax 所说,您可以在多个逻辑组中运行测试吗?类似的东西

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

如果是这样,您可以在 CircleCI 工作流程中的并行作业中运行这些命令中的每一个。

【讨论】:

  • 麻烦在于运行这些第一部分,我想我需要几个工作,一个用于设置,一个用于并行运行测试
  • 我想一个来设置(并保存工作区),然后多个并行运行测试(带有附加工作区)。
  • 您不应该尝试将工作空间用于使用 apt-get 等安装的工具。而是考虑将这些添加到下游作业可以使用的自定义 docker 映像中的单个作业。为了使构建更快,请考虑一个单独的项目/存储库来根据需要构建您的 PHP 映像,并在您的工作中引用它。
  • 这个答案没有解决手头的问题,即“我如何并行运行一些步骤而不是其他步骤?”
猜你喜欢
  • 2020-12-08
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多