Запустите pylint для обоих Python 2.7 и 3.7 в хуке предварительной фиксации на образе Docker
Я пытаюсь использовать CircleCI для запуска ловушки перед фиксацией, которая запускает Pylint для Python 2.7 и 3.7.
.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}
pre-commit, кроме всего прочего, запускает pylint:
- repo: https://github.com/pre-commit/mirrors-pylint
rev: v2.3.1 # Which version here?
hooks:
- id: pylint
Проблема здесь в том, что не существует версии pylint, совместимой с Python 2.7 и 3.7: Python 2.7 требует pylint 1.x, а Python 3.7 требует pylint 2.x.
Как я могу заставить Circle CI запускать оба задания с использованием разных версий Pylint?
Я рассматриваю несколько вариантов:
- Добавьте Pylint дважды в конфигурации предварительной фиксации (с разными псевдонимами) и отключите одну или другую в определении задания
- Похоже, что pre-commit пытается установить зависимости, прежде чем смотреть на
SKIP
переменная, поэтому Python 2.7 запускает попытку установить Pylint 2 в любом случае, и ошибки сERROR: Could not find a version that satisfies the requirement pylint==2.3.1 (from pre-commit-dummy-package==0.0.0)
- Похоже, что pre-commit пытается установить зависимости, прежде чем смотреть на
- Используйте образ Docker, который имеет обе версии Python и установите версию Python на уровне ловушки
- Это требует создания собственного образа Docker
- Пропустить пилинт на одном из заданий
- Поддержка Drop 2.7 или 3.7
0 ответов
Самый простой вариант - это, вероятно, установить как python2, так и python3, хотя можно использовать несколько файлов конфигурации для выполнения того, что вы хотите:
Другой вариант - запустить только один из них во время CI, используя --config
вариант
При этом у вас будет значение по умолчанию .pre-commit-config.yaml
и специальный .pre-commit-config-py27.yaml
который включает pylint python2.7 вместо pylint python3
В CI вы вызываете pre-commit run --config .pre-commit-config-py27.yaml --all-files --show-diff-on-failure
для python2.7 и нормального pre-commit run --all-files --show-diff-on-failure
для запуска без py27