当使用pipeline linter检查Jenkins脚本时,我得到以下反馈:Jenkinsfile content 'node('xxx') ... did not contain the 'pipeline' step.
一个简短的例子给出了同样的错误:
node('xxx'){
try {
stage("Get jenkins utils") {
echo 'get utils to support my builds'
}
}
catch (Exception err) {
echo err.getMessage()
}
}
如何添加管道步骤来解决此反馈,而不影响管道脚本的当前工作。理想情况下,我希望Jenkins将其作为脚本管道进行检查。
我不确定管道步骤的意图是什么,以及在哪里添加它。这感觉就像try catch必须被替换为不同的机制。
2条答案
按热度按时间ibps3vxo1#
这将返回
Jenkinsfile successfully validated.
:我使用脚本管道和linter can only handle declarative pipelines。上面应该是与我在问题中的脚本示例等效的声明性。
现在我不确定这是最好的使用方法,我需要更多的实验。
5ktev3wc2#
看看Jenkins documentation for pipeline syntax,它说得很简单:
所有有效的Declarative Pipelines必须包含在一个pipeline块中,例如:
这不是一个实际的解决方案,这是后来的,但
pipeline
声明的说明,但对于初学者,你可以尝试:如果你想进一步提高你的Jenkins管道技能,CloudBees,一家由Jenkins的创建者创建的公司,提供Jenkins支持,有a nice tutorial in their GitHub。
既然说到这里
agent
部分之下。stage
语句应该在stages
语句中。try/catch
语句应该在step
内部。step
应该在“Get jenkins utils”stage
中。所以你的管道应该看起来更像: