Travis CI中的分支和主服务器之间的Eslint文件已更改

时间:2018-11-21 10:06:09

标签: git travis-ci eslint

所以基本上,当按下分支时,我想在master分支和目标分支之间运行差异,然后将这些文件输入eslint。

命令是:

git diff --name-only master..$TRAVIS_BRANCH | grep -E '\.js$' | xargs npx eslint

当我在本地使用它并将$ TRAVIS_BRANCH替换为我当前的工作分支时,它就可以工作。

但是,当我在travis ci上使用此功能时,构建过程仅签出对其进行测试的分支,而不是主分支。所以它出了错误

$ git diff --name-only master..$TRAVIS_BRANCH | grep -E '\.js$' | xargs npx eslint
fatal: ambiguous argument 'master..test-fail': unknown revision or path not in the working tree.

如何获取travis CI来区分分支中更改的文件并仅对那些文件运行eslint?

.travis.yml

language: node_js
node_js:
  - "lts/*"
  - "node"
  - "8"
jobs:
  include:
    - stage: lint
      script: git diff --name-only master..$TRAVIS_BRANCH | grep -E '\.js$' | xargs npx eslint

2 个答案:

答案 0 :(得分:0)

  1. 您尝试过https://github.com/AtakamaLLC/lint-diffs吗?您可以将其配置为在任何更改的文件上运行eslint(或任何linter)。
  2. 首次运行git fetch origin ${TRAVIS_BRANCH}
  3. 然后将git diff -U0 $(git merge-base HEAD "origin/${TRAVIS_BRANCH:-master}"用作您的差异...我们在合并请求中使用它。似乎需要“原始”上游。

答案 1 :(得分:0)

为了将另一个答案添加到不需要python的混合中,我碰到了Fastlint,它似乎正是这样做的。

例如,在与eslint分支相比已更改的jssrc目录中的所有tests文件上运行origin/master

fastlint --status --print0 --glob '{src,tests}/**/*.{js,jsx}' origin/master HEAD | xargs -0 eslint