【问题标题】:How to use Xvnc plugin from Jenkins Pipeline如何使用来自 Jenkins Pipeline 的 Xvnc 插件
【发布时间】:2020-05-16 06:32:09
【问题描述】:

我正在尝试将现有的 Jenkins 作业移植到 Jenkinsfile。在大多数情况下,这很好用,但我一直无法弄清楚如何使用 Xvnc 插件。在旧的 Jenkins 作业中,插件配置为

Xvnc plugin settings

这是设置 DISPLAY 环境变量以便 Chrome 可以运行所必需的。我在 Jenkins 构建输出中看到的错误是

[32m27 07 2018 09:21:30.798:INFO [karma]:  [39mKarma v2.0.3 server started at http://0.0.0.0:9876/
[32m27 07 2018 09:21:30.800:INFO [launcher]:  [39mLaunching browser Chrome with unlimited concurrency
[32m27 07 2018 09:21:30.819:INFO [launcher]:  [39mStarting browser Chrome 
[31m27 07 2018 09:21:31.277:ERROR [launcher]:  [39mCannot start Chrome

我的(截断的)Jenkinsfile 看起来像这样

pipeline {
  agent {
    label 'java8&&chrome'
  }
  stages {
    stage ("Build") {
      tools {
        jdk 'jdk 1.8'
      }
      steps {
        step ([$class: 'Xvnc', useXauthority: 'true'])
        //wrap ([$class: 'Xvnc', useXauthority: 'true'])
        //xvnc { useXauthority(true) }
        sh './gradlew clean build -PsnapshotDeps'
      }
    }
  }
}

我怀疑我需要以某种方式将 gradle 步骤与 Xvnc 包装器一起包含在内,但没有一个尝试过的选项比我在这里尝试的选项更成功。

【问题讨论】:

  • @mszalbach 感谢您确认换行语法。当我更仔细地研究了错误消息时(no known implementation of class jenkins.tasks.SimpleBuildWrapper is named Xvnc),我发现 Xvnc 插件的版本可能已经过时了。我查了一下,似乎确实需要升级。
  • @mszalbach 根据要求,我可以确认我的安装有 1.17 的 Xvnc 插件。我看到管道支持直到 1.22 才添加到这个插件中,正如你所说的 1.24 是最新的。我已请求我的管理员升级此功能,一旦有机会重新测试,我会通知您。

标签: jenkins jenkins-plugins jenkins-pipeline


【解决方案1】:

wrap 命令后跟一个块。块内的所有内容都受包装器 (https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#wrap-general-build-wrapper) 的影响。

 stages {
    stage('Build') {
        steps {
            wrap([$class: 'Xvnc', takeScreenshot: false, useXauthority: true]) {
                sh './gradlew clean build -PsnapshotDeps'
            }
        }
    }
}

输出应该包含如下内容:

 [Pipeline] wrap
 Starting xvnc
 [jobname] $ vncserver :96 -localhost -nolisten tcp

补充:如 cmets Xvnc 插件中所述,自 1.22 以来添加了管道支持。

对于因果报应,也可以使用根本不需要任何 vnc 服务器的 ChromeHeadless。但我不确定这是否也适用于 gradle karma。

【讨论】:

  • 我用 docker jenkins 对此进行了测试,并在未安装 Xvnc 插件时得到完全相同的错误。所以请确保您安装了最新的 Xnvc 和管道插件。我使用了 Jenkins 2.121.2、管道插件 2.5 和 Xvnc 插件 1.24。请添加您用于问题的插件和版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2018-09-04
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多