如何报告声明式管道失败的阶段?在fail块中,我想获取failureStage.name并将其报告(最终报告为松弛)。
pipeline {
agent { label 'master'}
stages {
stage('Ok') {
steps {
echo 'do thing'
}
}
stage('NotOK') {
steps {
sh 'make fail'
}
}
}
post {
always {
echo 'ok'
}
failure {
echo 'Failed during Which Stage?'
}
}
}
PipelineVisitor是一种很好的方法。但是,如果您只想查看错误,那么利用FlowGraphTable
可能会更好。
以下内容提供了每个失败步骤的映射列表,并且还遍历了下游作业。我发现它非常有用。
您将要使用共享库来避免安全沙箱警告/批准
List<Map> getStepResults() {
def result = []
WorkflowRun build = currentBuild()
FlowGraphTable t = new FlowGraphTable(build.execution)
t.build()
for (def row in t.rows) {
if (row.node.error) {
def nodeInfo = [
'name': "${row.node.displayName}",
'url': "${env.JENKINS_URL}${row.node.url}",
'error': "${row.node.error.error}",
'downstream': [:]
]
if (row.node.getAction(LogStorageAction)) {
nodeInfo.url += 'log/'
}
for (def entry in getDownStreamJobAndBuildNumber(row.node)) {
nodeInfo.downstream["${entry.key}-${entry.value}"] = getStepResults(entry.key, entry.value)
}
result << nodeInfo
}
}
log(result)
return result
}
Map getDownStreamJobAndBuildNumber(def node) {
Map downStreamJobsAndBuilds = [:]
for (def action in node.getActions(NodeDownstreamBuildAction)) {
def result = (action.link =~ /.*\/(?!\/)(.*)\/runs\/(.*)\//).findAll()
if (result) {
downStreamJobsAndBuilds[result[0][1]] = result[0][2]
}
}
return downStreamJobsAndBuilds
}
我想在Jenkins声明性管道语法中定义多个阶段,它们可以在任何一个失败后继续。我找不到任何现存的真正重复的问题,因为它们都假定或允许脚本语法。 为了澄清,我不寻求如何在脚本语法中实现这一点。我试图理解这种流控制是否在声明性语法中得到支持和形式化。为此,我将尝试准确定义我要寻找的内容: < li >没有尝试/捕捉。我不想陷入脚本模式,或者将我的声明性管道“包装”在另一个共享库或脚本块中。 < li
我正在使用詹金斯声明管道,不知道是否有任何方法可以定期触发特定阶段。 我的意思是,当我们签出SCM时,管道会触发,但阶段2对我们的一些项目来说太长了。因此,我不想等待这个阶段,我只想每天运行这个阶段,但仍然将这个阶段保存在Jenkins文件中。 有没有办法做到这一点?这样做的最佳方法是什么?
我的Jenkins流水线并行运行多个任务。似乎如果一个阶段失败,所有后续阶段将运行其<code>failure</code>post块(无论它们是否实际失败)。我不知道这是故意的还是我做错了什么。 注意:这个管道运行在一个Windows节点上,因此< code>bat('exit /b 1') 在上面的管道中,只有“失败阶段”失败,但在输出中我看到了这一点,这表明对这两个步骤都执行了< code>
我有一系列执行快速检查的阶段。我想完成所有这些,即使有失败。例如: 第二阶段失败,因此默认情况下第三阶段不执行。 通常这将是的工作,但我想在阶段视图中显示它们。在下面的模型中: 构建4显示了通常发生的情况。作业失败,因此不运行
问题内容: Jenkins声明性管道中的参数可以动态吗? 我希望选择选项值在运行时由函数填充。以下代码确实生成了选项列表,但它们似乎过时了- 可能是在我第一次运行此代码时生成的。如果AMI列表更改,则选择将保持不变。我希望每次选择都运行此命令。 EDIT 我最终使用,带有扩展选择参数。目前它不支持该参数,因此我对其进行了修改https://review.openstack.org/#q,I0c6a
问题内容: 我正在为自动化测试添加jenkins声明性管道。在测试运行阶段,我想从日志中提取失败的测试。我正在使用Groovy函数提取测试结果。此功能不是詹金斯管道的一部分。这是另一个脚本文件。该函数运行良好,并构建了一个包含故障详细信息的字符串。在管道阶段内,我正在调用此函数并将返回的字符串分配给另一个变量。但是,当我回显变量值时,它会打印出空字符串。 在这里’sh’echo $ {result