Tag: jenkins plugins

Jenkins如何为构建后的插件发现config.jelly?

我正在为我公司的一些自定义报告创建一个post-build插件。 我从这里提供的Jenkins“hello world”示例开始: https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial 这很有效。 我能够加载插件并在我的Jenkins实例中使用它没有任何问题。 为了让我的项目顺利进行,我能够将HelloWorldBuilder移动到另一个文件夹,而不是Jenkins HPI安装程序创建,构建和上传此插件的默认文件夹。 我也能够将其更改为从hudson.tasks.Recorder派生,并将@Extension更改为从BuildStepDescriptor派生。 这一切都很好,我能够将hpi文件上传到Jenkins没问题,并且能够按照预期在后期构建步骤中使用该插件。 在这一点上,事情正在发生变化,我犯了一个错误,开始认为这将是一件轻而易举的事。 当我试图从“HelloWorldBuilder”重命名该类时,我开始遇到问题。 我看到该插件仍然是一个构建后的步骤,但不再能够配置它。 我尝试将config.jelly类和相应的帮助html文件移动到基​​于新类名的新目录,该类名也不起作用。 我已经尝试了几种基于其他论坛,其他插件回购和我找到的文档的路径结构和命名约定的组合,但无济于事。 我不确定我在这里缺少什么,所以我的问题是: Jenkins究竟是如何根据为插件/类名和目录结构的各种组合实现post-build插件的类来发现config.jelly文件的?

Jenkins插件中的变量替换

我正在开发一个新的Jenkins插件,该插件将在Jenkins作业的构建阶段执行,并且要求允许用户在插件的作业配置中指定变量名称(而不是文字值)。 目的是当作业执行时,用户指定的变量名称将替换为与变量关联的实际值,然后插件将在运行perform方法时使用此实际值。 例如,如果具有值myValue的变量MY_VARIABLE被作业的另一部分注入到构建环境中,并且在我的插件的作业配置中指定了值${MY_VARIABLE} ,那么我希望该插件替换${MY_VARIABLE}使用myValue变量的实际值。 做了一些研究后,我理解Jenkins不会自动用作业配置中的变量替换它们各自的值,这必须由插件处理。 我无法解决的是在我的插件中执行替换的最佳方法。 到目前为止我找到的唯一解决方案是解析从作业配置传递的字符串,看它是否与变量的正确模式匹配,然后在我的代码中查找值。 我的问题是Jenkins API是否提供了一个更好的解决方案,允许我的插件替换具有实际值的变量?

Groovy Classpath上的Jenkins包?

当使用Groovy Jenkins插件(不是Groovy Post Build Plugin,这是一个不同的东西)作为Post Step时,我无法解析hudson.model包中的类。 我是否需要将Jenkins .war添加到类路径中,或者这些包是否已经存在? 脚本: import hudson.model.*; import hudson.util.*; AbstractBuild currentBuild = (AbstractBuild) Thread.currentThread().executable; def mavenVer = currentBuild.getMavenArtifacts().getModuleRecords()[0].mainArtifact.version; println mavenVer; ParametersAction newParamAction = new hudson.model.ParametersAction(new hudson.model.StringParameterValue(“MAVEN_VERSION”, mavenVer)); currentBuild.addAction(newParamAction); 输出: [Common] $ /home/tester/tools/Groovy_1.8.3/bin/groovy /home/tester/workspace/Common/hudson8369102960709507246.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: /home/tester/workspace/Common/hudson8369102960709507246.groovy: 8: unable to resolve class AbstractBuild @ line 8, column 15. AbstractBuild currentBuild = […]

如何从Java代码更新Jenkins config.xml?

我是Jenkins插件开发的新手,如果问题很愚蠢,请原谅我。 我目前正在开发一个Jenkins插件,它提供了一个非常小的配置选项列表,如附带的屏幕截图所示。 该表单使用Jelly脚本设计。 我必须在我的Java代码中更新我的表单在作业的config.xml文件中提交的这些参数。 任何人都可以建议在我的Java代码中更新作业的当前config.xml的方法吗? 谢谢

可以在同一个hpi中存在两个不同的jenkins构建器并共享相同的全局配置吗?

我需要创建两个不同的Jenkins Builder类。 每个都做不同的事情,每个都需要自己的.jelly,但是,两者都需要相同的全局配置(global.jelly),它指定主机和一些用户凭据。 两个构建器类型的实例在其perform()期间将使用凭据(也在全局配置中指定)连接到主机(在全局配置中指定)。 问题是在Jenkins中,您将每个构建器的资源放在与构建器类名对应的文件夹中,并且该资源文件包含global.config。 如果我将配置复制到两个构建器的资源文件夹,我将获得两个相同的全局配置部分… 有两个Builder类创建一个.hpi,每个类都有自己的config.jelly和帮助.html文件,但两者共享相同的全局配置(global.jelly)?

jenkins注入环境变量

在Jenkins的工作中,我正在执行一些驻留在前置步骤构建中的操作,例如执行shell脚本。 使用Jenkins插件“EnvInject”我想将环境变量注入我的maven构建(unit testing),以便可以在我的Javaunit testing中使用它们。 在shell脚本中我做了类似的事情: echo “ip=$IP” >> unit-test.properties 构建Jenkins时输出以下内容: [EnvInject] – Injecting environment variables from a build step. [EnvInject] – Injecting as environment variables the properties file path ‘unit-test.properties’ [EnvInject] – Variables injected successfully. 但是我的Java代码(unit testing)中没有“ip”变量。 当我对System.getProperties() and System.getenv()进行完整打印时,我没有看到“ip”已登记。 我是否需要对maven执行任何特殊操作才能将变量传递给我的Java代码? 还有别的错吗? 从这一点开始我几乎停滞不前,我确实希望从前一步中将一个key=value注入到我的Java代码中。

如何在Jenkins上运行TestNG测试

我正试图从Jenkins运行TestNG测试(在一个包含的Java项目中),但没有运气。 似乎Jenkins的TestNG插件( https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin )只发布了TestNG测试的结果,但实际上并没有运行测试类……或者我错了吗? 在任何情况下,我如何在Jenkins的TestNG项目中实际运行TestNG测试,或者甚至可能? 例如,我是否必须使用命令行语句或批处理文件(在Windows Server 2008上)? 任何帮助非常感谢。 PS我尝试在Jenkins中输入一个post-build命令行,以便运行TestNG测试项目,但很难找到TestNG的类路径。 我发布了一个关于从命令行运行TestNG的早期问题,我无法正常工作,所以我放弃了这条路线: 如何从命令行运行TestNG