【发布时间】:2018-09-13 07:34:44
【问题描述】:
我尝试使用 Jenkins 调用以下 salt 脚本:
create_script:
file.managed:
- name: /tmp/broc/import_props.sh
- source: salt://projects/broc/jboss/files/import.sh.jinja
- template: jinja
Import_properties:
cmd.script:
- name: /tmp/broc/import.sh
- cwd: /tmp/broc`
Jenkins 控制台输出为:
`ID: create_script
Function: file.managed
Name: /tmp/broc/import.sh
Result: True
Comment: File /tmp/broc/import.sh updated
Started: 11:31:13.736928
Duration: 166.319 ms
Changes:
----------
diff:
New file
mode:
0644
ID: Import_properties
Function: cmd.script
Name: /tmp/broc/import.sh
Result: False
Comment: Command '/tmp/broc/import.sh' run
Started: 11:31:13.903378
Duration: 399.825 ms
Changes:
----------
pid:
8292
retcode:
1`
Jenkins 构建完成成功:
`Succeeded: 21 (changed=22)
Failed: 1
Total states run: 22
Total run time: 30.338 s"}}]
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS`
我的问题是 saltstack 作业 ID Import_properties 结果为 False。所以 Jenkins 构建也应该以失败告终。在上述情况下,saltstack 结果被忽略并构建完成 SUCCESS。有没有办法根据 saltstack Result 使 jenkins 构建失败?
我看到下面的 Jenkins 管道: `试试{ saltCmd = "\"salt -E \"($target)\" \ state.apply projects.alip.process-server \ 支柱=\'{\"region\":\"${Region}\",\"siteid\":\"${SiteID}\",\"dbuser\":\"${DBUSER}\", \"dbpass\":\"${DBPASS}\"}\'\""
result = salt authtype: 'pam',
clientInterface: local(
arguments: saltCmd,
blockbuild: true,
function: 'cmd.run',
target: "$my_salttarget",
saveFile: true,
targettype: 'glob'),
credentialsId: "$my_saltcred",
servername: "$my_saltserver"
}
}catch(e){
result = e.toString()
currentBuild.result = 'FAILURE'
}finally{
echo result.replace("\\n",'\n')
}
}`
我是 Jenkins 管道脚本的新手,您能否帮助建议输入以在 finally 下添加构建后步骤以解析 Jenkins 控制台输出,识别字符串,如果匹配则标记构建失败。这类似于文本查找器插件,只是我们编写了一个管道脚本。
【问题讨论】:
-
你能用 h
-l debug在 salt 中运行,看看它为什么会失败吗? -
salt 失败是由于 import.sh 上的文件权限,更正权限并重新运行作业可以解决问题。但问题是詹金斯在盐结果为假后未能完成构建为失败。当盐结果在任何工作中失败时,詹金斯应该以失败结束。
-
您没有展示如何从 Jenkins 管道调用 salt。
-
Jenkins 调用在 Git 存储库上提交的 saltstack 管道脚本。我们可以使用 try catch 添加任何管道阶段吗?
标签: jenkins jenkins-pipeline salt-stack