Как установить Ansible (Python) для снятия буфера вывода в Jenkins Pipeline Job - PullRequest
0 голосов
/ 29 апреля 2020

Пару лет go Я был в проекте, и у нас было Ansible плейбуков, работающих с вольными заданиями Дженкинса, с использованием PYTHONUNBUFFERED=1 в качестве переменной среды, чтобы мы могли видеть результат в реальном времени, он работал отлично, это было действительно полезно. Затем однажды это перестало работать, мы пытались это исправить, но никогда не тратили достаточно времени на то, чтобы выяснить, «что изменилось» и имели другие приоритеты.

Сейчас я работаю над другим проектом с той же техникой, только различия в том, что у нас есть более новые Python, Jenkins и Ansible сейчас. Я просто попытался установить PYTHONUNBUFFERED=1 снова, но не повезло, долгое выполнение задачи Ansible, использующей модуль оболочки, буферизует весь вывод и отображает его только после того, как команда вернулась.

Я также попытался PYTHONBUFFERED=0, и я попытался поставить префикс запуска книги воспроизведения, например, PYTHONUNBUFFERED=1 ansible-playbook ..., а также использовать параметр конвейера environment, чтобы установить его, и проверить его с помощью printenv, но все равно не повезло.

Ищу предложения о том, что попробовать дальше.

Как заставить Jenkins 2.233, Python 2.7.16 и Ansible 2.8.1 не буферизовать вывод для Ansible задач оболочки?

ps Для справки, другие инженеры используйте эту технику тоже: например 1. https://coderwall.com/p/d5zqla/unbuffered-output-with-ansible-in-jenkins 2. https://blog.deimos.fr/2016/01/07/ansible-color-and-buffer-fix-on-jenkins/

...