我正在设置一个CI环境,以使用jenkins管道进行自动Web测试。我有一个轮询作业,它将为每个可用的浏览器“ Chrome”,“ Firefox”,“ Safari”,“ Edge”启动下一个作业。下一个作业有2个阶段,一个阶段在Windows上执行,另一个阶段在macOS上执行。我看到的问题是,管道始终不阻塞2个执行程序,直到完成为止,而不是只使用一个从站的执行程序。
EX
作业从浏览器参数的Chrome值开始,第一阶段在Windows从站上执行,但是该作业仍需要MacOS从站上的执行程序来断言它是否要运行。这将导致Windows作业吞噬所有macOS从站,直到它们完成。
管道{ 代理
parameters{
choice(name: 'browser', choices: ['Chrome','Firefox','Safari', 'Edge'], description:'select browser to execute test')
choice(name: 'enviroment', choices: ['stage', 'live'], description: 'select enviroment for tests')
}
stages{
stage('Test on Windows'){
when{expression {params.browser == 'Chrome' || params.browser == 'Firefox' || params.browser == 'Edge' }}
agent{label 'WindowsOS'}
steps{
git()
script{
jobResult
}
}
}
stage('Test on MacOS'){
when{expression {params.browser == 'Safari'}}
agent{label 'MacOS'}
steps{
git()
script{
jobResult
}
}
}
}
post{
always{
script{
}
}
success{
script{
}
}
}
}
输出:
[管道]管道的开始
[管道]节点
在/ Users / jenkins / build / workspace / Sanity_Checklist @ 2中的RO_MacOS_0上运行
[管道]阶段
[管道] {(在Windows上测试)
仍在等待安排任务
正在等待“ RO_WindowsOS_0”上的下一个可用执行程序
在C:\ Jenkins \ workspace \ Sanity_Checklist @ 3中的RO_WindowsOS_0上运行
[管道] git
.............
[管道]阶段
[管道] {(在MacOS上测试)
[管道]节点
仍在等待安排任务
等待“ MacOS”上的下一个可用执行程序
我正在尝试为此找到一种优雅的解决方案,因此我仍然可以在两个平台上都有一份工作。我尝试了when标签{}和与所需从属标签匹配的代理标签