为什么我的管道使用了两个执行器,尽管它断言只需要一个执行器

时间:2019-04-03 12:41:31

标签: jenkins-pipeline

我正在设置一个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标签{}和与所需从属标签匹配的代理标签

0 个答案:

没有答案