我有以下style="position: absolute; left: -1000px; top: -1000px"
:
Jenkinsfile
在哪里可以指定一组通用的“前阶段”或“后阶段”动作来执行?用例将在阶段结束时将日志记录信息发送到日志管理器,但是最好不要在每个阶段结束时复制并粘贴这些调用。
答案 0 :(得分:1)
据我所知,Jenkins管道中没有通用的后期或前期挂钩。您可以在post
section中定义发布步骤,但每个阶段都需要一个。
但是,如果您不想重复自己,可以有一些选择。
在其中放置重复代码的地方shared library。这样一来,您就可以使用Groovy声明自己的步骤。
您需要另一个存储库来定义一个共享库,但是除此之外,这是一种很困难的前进方式,您可以在所有Jenkins的管道中重用代码。
如果在pipeline
之外声明函数,则可以从任何阶段调用它。并没有真正记录下来,将来可能会阻止它。据我了解,它与主代理和代理之间的协调混乱。但是,它可以工作:
pipeline {
agent any
stages {
stage ("First") {
steps {
writeFile file: "resultFirst.txt", text: "all good"
}
post {
always {
cleanup "first"
}
}
}
stage ("Second") {
steps {
writeFile file: "resultSecond.txt", text: "all good as well"
}
post {
always {
cleanup "second"
}
}
}
post {
always {
cleanup "global" // this is only triggered after all stages, not after every
}
}
}
}
void cleanup(String stage) {
echo "cleanup ${stage}"
archiveArtifacts artifacts: "result*"
}