Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.8k views
in Technique[技术] by (71.8m points)

ansible - Jenkins pipeline : awx cli stdout

In my Jenkins pipeline, I launch a AWX job template with the option --monitor, the main goal being able to follow in Jenkins console what's going on in 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  ")

A similar post about running an ansible playbook via a shell script in jenkins pipeline had been made. However, the solution proposed does not solve my pb as I did not set returnStdout: true anyway.

The log is displayed in the Jenkins log console only when the Ansible job is completed.

When I launch the "awx job_templates launch" command directly from the Jenkins slave, the log is displayed in real time in the stdout.

How can I have the stdout being updated in real time in the Jenkins log console ?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Actually, the answer was somehow in this post about Jenkins console output not in realtime

The awxkit package being coded in Python, I just needed to set 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  ")

This allowed me to obtain the AWX logs in real time in my Jenkins console.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...