代码之家  ›  专栏  ›  技术社区  ›  Kenneth Truong

如何使TravisCI并行运行flow/test/lint?

  •  2
  • Kenneth Truong  · 技术社区  · 6 年前

    在我的 .travis.yml 我有这个。

    script:
    - yarn lint    
    - yarn flow  
    - yarn test --runInBand   
    

    我想知道有没有办法让它们并行运行?

    2 回复  |  直到 6 年前
        1
  •  4
  •   Jakub Zalas    5 年前

    在Travis文档中,您可以使用的建议很少,即将构建拆分为多个作业: https://docs.travis-ci.com/user/speeding-up-the-build/

    您可以做的另一件事是使用GNU并行:

    addons:
        apt_packages:
            - parallel
    
    script:
        - parallel --gnu --keep-order ::: 'yarn lint' 'yarn flow' 'yarn test --runInBand'
    

    GNU parallel命令有许多选项,您可能需要根据需要进行调整。在他们的网站上阅读有关该工具的更多信息 https://www.gnu.org/software/parallel/

        2
  •  2
  •   Kenneth Truong    6 年前

    要将Travis拆分为多个作业,可以使用阶段或添加选项 环境

    这将按顺序运行每个脚本:

    script: 
      - yarn lint
      - yarn flow
      - yarn test --runInBand
      - yarn build
      - yarn cypress
    

    让它们并行运行。您可以将其更新为以下代码(但请记住,这受到可用并发作业数量的限制)。 https://travis-ci.com/plans )

    使用 构建阶段

    language: node_js
    node_js:
      - '9'
    
    install:
      - travis_retry yarn install 
    
    jobs:
      include:
        - stage: test
          name: "Flow/Lint/Test"
          script:
            - yarn lint
            - yarn flow
            - yarn test
        -
          name: "Cypress"
          script:
            - yarn cypress
    

    使用 环境

    env:
      - TEST_SUITE="yarn lint"
      - TEST_SUITE="yarn flow"
      - TEST_SUITE="yarn test --runInBand"
      - TEST_SUITE="yarn build"
      - TEST_SUITE="yarn cypress"
    
    script: $TEST_SUITE
    

    另一种选择是只有两个并发构建。

    env:
      - TEST_SUITE="yarn lint && yarn flow && yarn test --runInBand && yarn build"
      - TEST_SUITE="yarn cypress"
    
    script: $TEST_SUITE
    

    这可能会也可能不会提高总体构建时间。对我来说,我的大部分构建时间都在cypress中,而lint+flow+测试需要几分钟。因此,通过分离cypress来完成自己的工作,我将总体构建时间加快了几分钟。