我正在使用Jenkins作业DSL创建我的作业,并使用Spock
和jenkins-test-harness
测试我的脚本。
基于Gradle示例,我能够成功安装新的插件,但如何更新已经安装的插件?
我尝试使用UpdateCenter,但即使使用LinkedBlockingQueue
,我也无法强制测试等待更新过程。
import groovy.io.FileType
import hudson.PluginWrapper
import hudson.model.UpdateCenter
import javaposse.jobdsl.dsl.DslScriptLoader
import javaposse.jobdsl.dsl.JobManagement
import javaposse.jobdsl.plugin.JenkinsJobManagement
import org.junit.ClassRule
import org.jvnet.hudson.test.JenkinsRule
import spock.lang.Shared
import spock.lang.Specification
import spock.lang.Unroll
import java.util.concurrent.Future
import java.util.concurrent.LinkedBlockingQueue
/**
* Tests that all dsl scripts in the jobs directory will compile.
*/
class JobScriptsSpec extends Specification {
@Shared
@ClassRule
JenkinsRule jenkinsRule = new JenkinsRule()
def setupSpec() {
printPlugins()
jenkinsRule.getInstance().getUpdateCenter().updateAllSites()
def plugin = jenkinsRule.getInstance().getUpdateCenter().getPlugin('subversion')
println "Wait for subversion update..."
def queue = new LinkedBlockingQueue<Future<UpdateCenter>>()
queue.add(plugin.deploy())
queue.take()
println "Wait Done..."
}
@Unroll
void 'test script #file.name'(File file) {
given:
JobManagement jm = new JenkinsJobManagement(System.out, [:], new File('.'))
when:
new DslScriptLoader(jm).runScript(file.text)
then:
noExceptionThrown()
where:
file << jobFiles
}
private void printPlugins() {
println "****** Plugins *****"
List<PluginWrapper> plugins = jenkinsRule.getPluginManager().getPlugins()
plugins.each { PluginWrapper plugin ->
println "Plugin: ${plugin.getLongName()}"
}
}
static List<File> getJobFiles() {
List<File> files = []
new File('jobs').eachFileRecurse(FileType.FILES) {
if (it.name.endsWith('.groovy')) {
files << it
}
}
files
}
}
INFO: Obtained the latest update center data file for UpdateSource default
Wait for subversion update...
Jul 01, 2016 3:58:42 PM hudson.model.UpdateSite$Plugin deploy
INFO: Adding dependent install of workflow-scm-step for plugin subversion
Jul 01, 2016 3:58:42 PM hudson.model.UpdateSite$Plugin deploy
INFO: Adding dependent install of git-client for plugin workflow-scm-step
Jul 01, 2016 3:58:42 PM hudson.model.UpdateSite$Plugin deploy
INFO: Adding dependent install of workflow-step-api for plugin workflow-scm-step
Jul 01, 2016 3:58:42 PM hudson.model.UpdateSite$Plugin deploy
INFO: Adding dependent install of structs for plugin workflow-step-api
Jul 01, 2016 3:58:42 PM hudson.model.UpdateSite$Plugin deploy
INFO: Adding dependent install of mapdb-api for plugin subversion
Wait Done...
Jul 01, 2016 3:58:42 PM hudson.model.UpdateCenter$DownloadJob run
INFO: Starting the installation of Git client plugin on behalf of SYSTEM
Processing provided DSL script
您可以将任何要安装或更新的插件添加到 build.gradle
文件中的 testPlugins
配置中:
dependencies {
// ...
testPlugins 'org.jenkins-ci.plugins:subversion:2.6'
// ...
}
有关详细信息,请参阅工作DSL wiki:https://github.com/jenkinsci/job-dsl-plugin/wiki/Testing-DSL-Scripts
我在服务器的/var/lib/hudson目录中安装了一个hudson。当我通过浏览器中的URL访问jenkins时,我会在页面底部看到版本1.411。 有人知道如何通过命令行(CLI)更新詹金斯吗?如果可能的话。 当我进入管理詹金斯页面时,它说:“詹金斯的新版本(1.521)可供下载(变更日志)。” 我觉得下载新的jar并在服务器中提取不安全。
问题内容: 我是Jenkins Plugin开发的新手,所以请问这个问题很愚蠢。我目前正在开发Jenkins插件,该插件提供了非常小的配置选项列表,如所附的屏幕快照所示。 该表单是使用Jelly脚本设计的。我必须从Java代码更新作业的config.xml文件中由表单提交的这些参数。谁能在我的Java代码中建议更新作业的当前config.xml的方法吗? 谢谢 问题答案: 经过一些研究,我已经知道
我必须使用jenkins的api创建/更新一个jenkins作业,因为我的所有作业都使用了其他脚本也使用的参数,并且我试图将脚本集中起来,这样当我在一个地方更改它时,所做的更改就会反映在所有的脚本中。 当前,如果有人更改了脚本,他们也必须手动编辑jenkins作业的参数。 我看到了用于创建作业的远程API的示例,并且能够成功地创建测试作业,但是除了删除并重新创建一个现有作业之外,我如何编辑它(这不
我有Jira,包括他们的插件Zephyr和ZAPI。我正在运行Jenkins的代码,如视频所示。我的代码是Java TestNG,我还没有为Jenkins添加Junit插件。我的测试运行正常,但控制台输出显示: 构建结果为SUCCESS null解析JUnit测试结果的问题。解析可靠报告时出错。请确保“添加发布JUnit测试结果报告”作为构建后操作构建步骤“将测试结果发布到Zephar for J
问题内容: 什么是对React组件prop更新进行单元测试的正确方法。 这是我的测试装置; 这可以正常工作,并且测试通过了,但是显示了反应警告消息 我要测试的只是属性的更新,而不是使用其他属性创建元素的新实例。有没有更好的方法来执行此属性更新? 问题答案: AirBnB的酶库为这个问题提供了一个优雅的解决方案。 它提供了一个setProps方法,可以在浅包装或jsdom包装上调用该方法。
问题内容: 我正在尝试从Jenkins运行TestNG测试(在一个包含的Java项目中),但是没有运气。 似乎Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng- plugin )仅发布TestNG测试的结果,但实际上不运行测试类…或我错了吗? 无论如何,我如何在Jenkins的TestNG项目中实际运行TestN