我正在尝试使用Jenkins服务器上的命令模块运行脚本。编写脚本时,如果不进行任何配置更改,则应返回0,并且不应更改Ansible任务。
以下是代码:
- name: Script to run
command: java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080 groovy "{{ jenkins_home }}/userContent/script.groovy"
register: return_code
changed_when: return_code.stdout != 0
但是上面的代码行为总是显示为已更改。
Ansible输出:
任务[jenkins:要运行的脚本] ********************************
已更改:[test] => {“已更改”:true,“cmd”:[“java”,“ - jar”,“/ var / cache / jenkins / war / WEB-INF / jenkins-cli.jar”,“ - s”,“{{ 3}}“,”groovy“,”/ var / lib / jenkins / userContent / script.groovy“],”delta“:”0:00:01.547098“,”end“:”2017-02-06 15:31 :05.989134“,”rc“:0,”start“:”2017-02-06 15:31:04.442036“,”stderr“:”[WARN]无法使用SSH密钥进行身份验证。以匿名方式进行“,”stdout “:”0“,”stdout_lines“:[”0“],”警告“:[]}
答案 0 :(得分:2)
您需要将stdout
值与字符串而不是整数进行比较:
- name: Script to run
command: java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080 groovy "{{ jenkins_home }}/userContent/script.groovy"
register: script_call
changed_when: script_call.stdout != "0"