仅在部署时使用 Travis 中的矩阵构建

问题描述 投票:0回答:2

有什么方法可以在部署时在 travis 中运行矩阵构建吗?现在,我们使用相同的

.travis.yml
文件进行测试和部署,并且在两种情况下都会触发矩阵构建(因此有两个工作人员)。我找不到一种方法来仅在我们正在部署的情况下将构建作为矩阵运行,而不是在我们运行测试时运行(或者可能仅在部署过程中使用矩阵)。我想要这样做的主要原因是,当创建 PR 时我不会触发额外的构建,而我只需要运行测试构建。

我也找不到一种简单的方法,可以为 npm install/npm test 运行单个构建,然后为“部署”过程分拆两个单独的工作人员/矩阵,这也可以解决问题。

这是我当前的 .travis.yml 文件的片段:

language: node_js
node_js: 4.2.1
env:
  global:
    - APP_NAME=example
  matrix:
    - CF_DOMAIN=example1.net CF_TARGET=https://target1.com APP_NAME=${APP_NAME}-1
    - CF_DOMAIN=example2.net CF_TARGET=https://target2.com APP_NAME=${APP_NAME}-2

branches:
  only:
    - master
deploy:
- provider: script
  skip_cleanup: true
  script: node_modules/.bin/deploy.sh
  on:
    branch: master

我们也可以只在

push
钩子上运行矩阵构建,但不能在
pr
上运行矩阵构建。

build continuous-integration travis-ci
2个回答
2
投票

Travis 的 GitHub 上也发布了类似的问题。建议使用两个单独的 .travis.yml 文件。

https://github.com/travis-ci/travis-ci/issues/2778


0
投票

您现在可以使用 Travis 条件构建 来通过各种 条件 来完成此操作 - 仅当分支是主分支时才运行构建。在这个例子中:

language: node_js
node_js: 4.2.1
env:
  global:
    - APP_NAME=example
  matrix:
    include:
      - CF_DOMAIN=example1.net CF_TARGET=https://target1.com APP_NAME=${APP_NAME}-1
        if: type = push # added this
      - CF_DOMAIN=example2.net CF_TARGET=https://target2.com APP_NAME=${APP_NAME}-2
        if: type = push # added this

branches:
  only:
    - master
deploy:
- provider: script
  skip_cleanup: true
  script: node_modules/.bin/deploy.sh
  on:
    branch: master
© www.soinside.com 2019 - 2024. All rights reserved.