最近,我尝试在其中一个阶段中构建包含大量“测试”的詹金斯管道。
问题是,在某个时刻我遇到了关于阶段阶段过大的错误,因此我尝试使用将构建所有阶段的函数来解决该问题,并且可以在以下命令中运行此函数输出(阶段映射)平行。 有些阶段必须在从标签获取的代理(节点)上运行,而另一些阶段则具有一些独特的步骤。 我试图从总体上理解如何编写将构建可并行运行的映射的函数-但没有成功,也没有在网上找到任何好的示例。
我知道这个问题很笼统,但是如果有人能指出或举一个例子,那就太好了。
这是我正在处理的代码段(不是完整的JenkinsFile):
def getParallelBuilders(list_arr) {
def builders = [:]
builders['Test-1'] =
stage ('Test-1')
{
node('ci-nodes')
{
when {
environment name: 'TEST_NAME', value: 'true'
beforeAgent true
}
timeout(time: 1, unit: 'HOURS')
script { runtests() }
post {
success { onTestSuccess title: 'Temp', pytest: 'results.xml' }
cleanup { afterTestCleanup2("clean") }
}
}
}
return builders
}
对该函数的调用是在构建,配置等阶段之后,从我的“ pipeline”块进行的:
stage('Testing') {
steps {
script { parallel getParallelBuilders(list_arr) }
}
}
不确定我解决这个问题的方法是否正确, 希望有人能指出我正确的方向。
答案 0 :(得分:0)
过一会儿,这是我遇到的问题的解决方案:
builders = [
'Test1':
{
stage ('Test1')
{
if (RUN_TESTS == 'true')
{
timeout(time: 30, unit: 'MINUTES')
{
node('ci-nodes')
{
try
{
runtests()
onTestSuccess title: 'Temp', pytest: 'results.xml'
}
catch (err)
{
onTestFailure testName: "Test1"
}
finally
{
afterTestCleanup()
}
}
}
}
}
}
主要问题是了解脚本编制管道语法,这实际上与声明方式不同。