ansible - 詹金斯管道:awx cli标准输出
问题描述
在我的 Jenkins 管道中,我启动了一个带有选项 --monitor 的 AWX 作业模板,主要目标是能够在 Jenkins 控制台中跟踪 AWX 中发生的事情。
sh ("awx --conf.insecure --conf.host ${ansibleUrl} --conf.username ${ANSIBLE_USERNAME} --conf.password ${ANSIBLE_PASSWORD} job_templates launch --extra_vars @ansible_extra_vars_file.json --monitor $ANSIBLE_JOB_TEMPLATE_ID ")
已经发表了一篇关于通过 jenkins 管道中的 shell 脚本运行 ansible playbook的类似帖子。但是,提出的解决方案并没有解决我的 pb 因为我没有设置 returnStdout: true 反正。
仅当 Ansible 作业完成时,日志才会显示在 Jenkins 日志控制台中。
当我直接从 Jenkins 从站启动“awx job_templates launch”命令时,日志会实时显示在标准输出中。
如何在 Jenkins 日志控制台中实时更新标准输出?
解决方案
实际上,答案不知何故在这篇关于Jenkins 控制台输出的帖子中不是实时的
awxkit 包是用 Python 编写的,我只需要设置 PYTHONUNBUFFERED=1
sh ("export PYTHONUNBUFFERED=1; awx --conf.insecure --conf.host ${ansibleUrl} --conf.username ${ANSIBLE_USERNAME} --conf.password ${ANSIBLE_PASSWORD} job_templates launch --extra_vars @ansible_extra_vars_file.json --monitor $ANSIBLE_JOB_TEMPLATE_ID ")
这使我能够在我的 Jenkins 控制台中实时获取 AWX 日志。