Запустите pylint для обоих Python 2.7 и 3.7 в хуке предварительной фиксации на образе Docker - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь использовать 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 поддержки
...