我正在尝试使用CircleCI运行一个预提交钩子,该钩子同时为Python 2.7和3.7运行pylint。
.circleci/config.yml
对Python 2和Python 3运行预提交。
jobs:
lint-py2:
docker:
- image: python:2.7.14
steps:
{snip}
- run: pre-commit run --all-files
{snip}
lint-py3:
docker:
- image: python:3.7.3
steps:
{snip}
- run: pre-commit run --all-files
{snip}
除其他事项外,预提交运行pylint:
- repo: https://github.com/pre-commit/mirrors-pylint
rev: v2.3.1 # Which version here?
hooks:
- id: pylint
这里的问题是there is no version of pylint that is compatible with both Python 2.7 and 3.7:Python 2.7需要pylint 1.x,Python 3.7需要pylint 2.x。
如何使Circle CI使用不同版本的pylint运行两个棉绒作业?
我正在考虑几种选择:
SKIP
变量之前安装依赖项 ,因此Python 2.7运行仍然尝试安装pylint 2,并且出现{{1}错误} 答案 0 :(得分:1)
最简单的选择可能是同时安装python2和python3,尽管可以使用多个配置文件来完成所需的操作:
另一种选择是通过使用--config
选项在CI中仅运行其中的一个
有了这个,您将拥有默认的const robotFactory = (model, mobi) =>
{
return {
model: model,
mobi: mobi,
beep()
{
console.log('Beep Boop');
}
}
};
const one = robotFactory('P-500', true);
console.log(one.model);
和一个特殊的.pre-commit-config.yaml
,其中包括python2.7 pylint而不是python3 pylint
在CI中,您将为python2.7调用.pre-commit-config-py27.yaml
,为非py27运行调用普通pre-commit run --config .pre-commit-config-py27.yaml --all-files --show-diff-on-failure