首页 > 解决方案 > 詹金斯管道: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 日志控制台中实时更新标准输出?

标签: ansiblejenkins-pipelineansible-tower

解决方案


实际上,答案不知何故在这篇关于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 日志。


推荐阅读