Jenkins流水线:为Xvfb启动“Wrap”阶段

6

我正在尝试使用以下方法来包装阶段:

      wrap([$class: 'Xvfb', additionalOptions: '', assignedLabels: '', autoDisplayName: true, debug: true, displayNameOffset: 100, installationName: 'XVFB', parallelBuild: true]) {

如果我有以下行的Jenkins文件,如何先启动Xvfb然后开始运行测试套件?换句话说,如何包装阶段?
如果我有下面的Jenkins文件行,如何在开始运行测试套件之前先启动Xvfb?换句话说,如何包装这些阶段?
pipeline {

agent any 
             parameters{
             choice(choices: 'chrome\nfirefox\nie' , description: 'choose browser name' , name: 'browser')
             choice(choices: 'false\ntrue'  , description: 'Not running on Selenium Grid?' , name: 'localRun')
        }

stages {
      stage('Install Parent Project') {
        steps {
        sh 'mvn -f /var/lib/jenkins/workspace/ clean install -DskipTests=true'
        }
    }
}

感谢您的选择。

只是提供信息:现在大多数浏览器都支持本地无头模式,因此不再需要使用xvfb。 - SiKing
@SiKing 真的吗?我收到了“找不到Chrome二进制文件”的错误。 - Y-B Cause
你需要添加无头ChromeOption,找不到二进制文件。我认为这是因为你没有在代码中将Chrome驱动程序添加为系统变量。 - Nael Marwan
2个回答

6

以下是如何添加带有超时的Wrap块:

    stage('Run Tests Suite') {
        steps {
         timeout(45) {
         wrap([$class: 'Xvfb', additionalOptions: '', assignedLabels: '', autoDisplayName: true, debug: true, displayNameOffset: 0, installationName: 'XVFB', parallelBuild: true, screen: '1024x758x24', timeout: 25]) {
        sh 'mvn  -f /var/lib/jenkins/workspace/... test -DlocalRun=${localRun} -Dbrowser=${browser} -DxmlPath='''
        }
        }
    }      
    }

0

你可以把第一阶段放在包装里面

stages {
    wrap([$class: 'Xvfb', ....) {
        stage('Install Parent Project') {
            steps {
            sh 'mvn -f /var/lib/jenkins/workspace/ clean install -DskipTests=true'
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接