如何设置travis以跳过特定nodejs版本上的脚本

时间:2018-01-14 13:48:56

标签: node.js travis-ci

我在多个版本的NodeJS上运行travis。例如。 6,7,8,9。

在构建过程中,我运行代码覆盖和其他事情。

有没有办法跳过在特定NodeJS上运行这些脚本?

e.g。代码覆盖率工具只需要在其中一个版本(例如最高版本)上运行。

这将为我节省一些时间和travis的资源。

例如,我想在下面的before_install中的NodeJS 6和8上跳过before_scriptafter_scriptafter_success.travis.yml

node_js:
  - '9'
  - '8'
  - '6'
branches:
  only:
    - master
    - /^greenkeeper.*$/
before_install:
  - npm install -g greenkeeper-lockfile@1

before_script: greenkeeper-lockfile-update

script:
  - npm run verify

after_script: greenkeeper-lockfile-upload

after_success:
  - npm install -g travis-deploy-once@4
  - travis-deploy-once "npm run semantic-release"
  - npm install --no-save coveralls && npm run coveralls
  - npm install --no-save codecov && npm run codecov

2 个答案:

答案 0 :(得分:2)

您可以使用简单的if语句:

int i = 0;
do {
    cin>>str[i];
} while (cin && !std::isspace(str[i]) && ++i < sizeof(str));
if (i == sizeof(str))
{
    str[sizeof(str)-1] = '\0';
}

if语句检查before_install: > node_version=$(node -v); if [ ${node_version:1:1} = 9 ]; then echo "succes!"; npm install -g greenkeeper-lockfile@1; else echo "else"; fi 的第二个字符是否等于node -v

同一行:

9

PS:我强烈建议您使用documentation中所述的bash脚本,而不是before_install: - node_version=$(node -v); if [ ${node_version:1:1} = 5 ]; then npm install -g greenkeeper-lockfile@1; else echo "else"; fi 中的脚本。

答案 1 :(得分:1)

感谢Night Train,这就是我最终做的事情:

#! /bin/bash
if [ $1 = 'latest' ]; then
  target_version=$(npm info node version);
else
  target_version=$1;
fi
node_version=$(node -v);
if [ ${node_version:1:1} = ${target_version:0:1} ]; then
  echo "Detected ${node_version}, satisfying ${target_version}. Executing command";
  eval $2;
else
  echo "NodeJS ${node_version} instead of latest (${target_version:0:1}) is detected. Skipping command";
fi

.travis.yml

after_success:
  - ./scripts/run-on-node-version.sh latest "npm install --no-save coveralls && npm run coveralls"
  - ./scripts/run-on-node-version.sh latest "npm install --no-save codecov && npm run codecov"

这样我可以将操作保存在一个位置(.travis.yml),其他CI可以将./scripts/run-on-node-version.sh用于其他目的。

https://gist.github.com/unional/f3ba0ba96df85d7ca957b2df1318dfdf