Как рассказать Дженкинсу об использовании конкретного виртуального питона

Я уже создал virtualenv для запуска моего скрипта python.

Теперь, когда я интегрирую этот скрипт python с Jenkins, я обнаружил, что в данный момент Jenkins использует неправильную среду python.

Как я могу гарантировать, что Дженкинс использует правильный virtualenv?

Например, для моего случая я хочу использовать virtualenv test. Как я могу использовать этот подготовленный virtualenv для запуска моего скрипта python.

source test/bin/activate 

2 Solutions collect form web for “Как рассказать Дженкинсу об использовании конкретного виртуального питона”

Вы должны установить один из плагинов python. Я использовал ShiningPanda . Затем вы сможете создавать отдельные конфигурации виртуальной среды в разделе «Управление установками Jenkins> Настройка системы> Python> Python». В конфигурации задания будет шаг Python Builder, где вы можете выбрать среду python.

Просто убедитесь, что вы не запускаете сервис Jenkins из существующей виртуальной среды python.

Во-первых, вам следует избегать использования ShiningPanda, потому что он сломан. Он будет терпеть неудачу, если вы попытаетесь запустить задания параллельно, а также не совместимы с конвейерами Jenkins2.

Когда сборки выполняются параллельно (параллельно), Jenkins добавит @2 , @3 … в каталог рабочей области, поэтому два исполнения не будут использовать одну и ту же папку. Дженкинс делает клонирование исходного рабочего пространства, поэтому не удивляйтесь, если он будет содержать virtualenv, который вы создали в предыдущей сборке.

Вы должны сами позаботиться о создании virtualenv, но вы должны быть очень осторожны в том, как вы его используете:

  • папка рабочих пространств может не очищаться, и ее местоположение может меняться от одной сборки к другой
  • virtualenvs знают, что их сломают, когда они перемещаются, а дженкинс перемещает их.
  • создание файлов за пределами рабочего пространства – действительно плохая практика CI, избегайте соблазна использовать / tmp

Таким образом, ваш единственный безопасный вариант – создать уникальную папку виртуальной среды для каждой сборки внутри рабочей области. Вы можете легко сделать это, используя переменную среды $JOB_NUMBER .

Это будет отличаться, даже если у вас есть задания, выполняемые параллельно. И это не повторится.

Недостатки:

  • speed : virtualenvs не используются повторно между сборками, поэтому они полностью воссозданы. Если вы используете --site-packages вы можете значительно --site-packages создание (если тяжелые пакеты уже установлены в системе)
  • space : если рабочее пространство не очищается регулярно, количество виртуальных серверов будет расти. Обход проблемы: работа, которая очищает рабочие пространства каждую неделю или каждые две недели. Это также хорошая практика для выявления других ошибок. Некоторые люди выбирают очистку рабочего пространства для каждого исполнения.

Фрагмент оболочки

  #/bin/bash set -euox pipefail # Get an unique venv folder to using *inside* workspace VENV=".venv-$BUILD_NUMBER" # Initialize new venv virtualenv "$VENV" # Update pip PS1="${PS1:-}" source "$VENV/bin/activate" # <YOUR CODE HERE> 

В первой строке используется режим строки bash, более подробная информация находится по адресу http://redsymbol.net/articles/unofficial-bash-strict-mode/.

  • Как установить lessc и nodejs в виртуальной среде Python?
  • Можно ли изящно обновить существующий virtualenv?
  • Зачем вам нужно установить переменную среды WORKON_HOME?
  • Python запрашивает более старые пути на Mac после удаления дублированной установки python
  • Создать virtualenv в существующем каталоге без создания «локального» каталога
  • Virtualenv ". venv / bin / активировать "vs" источник venv / bin / activate "
  • Можно ли добавить пакеты PyQt4 / PySide в песочницу Virtualenv?
  • virtualenv Env не создает каталог bin в Windows 7
  • Python - лучший язык программирования в мире.