Я пытаюсь использовать 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)
- Используйте образ Docker, который имеет обе версии Python, и установите версию Python на уровне ловушек
- Это требует создания собственного образа Docker
- Пропустить пулинт на одном из заданий на подкладку
- Drop 2.7 или 3.7 поддержки