我正在尝试使用 groovy 在 jenkins 中创建一个新项目。因此我想使用 jenkins 脚本控制台。该脚本工作正常,但如果您正在查看相应的配置文件,则标记 <actions/>
不见了。由于缺少标签,该项目未构建。以下代码对我有效(from here),但我不想为了让它起作用而复制另一个作业。
def jenkins = hudson.model.Hudson.instance
def template = jenkins.getItem("MyTemplate")
def job = jenkins.copy(template,"MyNewJob")
job.save()
这实际上是我的脚本。
//Get instance of Jenkins
def parent = Jenkins.getInstance()
//Define a job name
def jobName = "Job"
//Instantiate a new project
def project = new FreeStyleProject(parent, jobName);
//Set a description for the project
project.setDescription("Just a placeholder for a description")
//Create a parameter for the project
def parameterDefinitions = new ArrayList<ParameterDefinition>();
def name = "ParameterOne"
def defaultValue = "1"
def description = "Just a placeholder for a parameter description"
parameterDefinitions.add(new StringParameterDefinition(name, defaultValue, description) )
//Create a job property for the project
def jobProperty = new ParametersDefinitionProperty(parameterDefinitions);
//Adding and saving the job property to the project
project.addProperty(jobProperty)
project.save()
相应的 config.xml 看起来像这样:
<?xml version='1.0' encoding='UTF-8'?>
<project>
<description>Just a placeholder for a description</description>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<hudson.model.StringParameterDefinition>
<name>ParameterOne</name>
<description>Just a placeholder for a parameter description</description>
<defaultValue>1</defaultValue>
</hudson.model.StringParameterDefinition>
</parameterDefinitions>
</hudson.model.ParametersDefinitionProperty>
</properties>
<scm class="hudson.scm.NullSCM"/>
<canRoam>false</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publishers/>
<buildWrappers/>
</project>
正确的形式是:
<?xml version='1.0' encoding='UTF-8'?>
<actions/>
<project>
<description>Just a placeholder for a description</description>
<keepDependencies>false</keepDependencies>
...
有什么办法解决这个问题吗?
最佳答案
实际上,如果您重新启动 Jenkins,作业应该会成功创建。如果您不想重启 Jenkins,只需调用 reload 重新加载配置。
在您的 groovy 脚本末尾添加以下代码行将解决问题:
parent.reload()
关于groovy - 我如何使用 Groovy 在 Jenkins 中创建一个新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25093168/