groovy - 我如何使用 Groovy 在 Jenkins 中创建一个新项目

标签 groovy jenkins

我正在尝试使用 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/

相关文章:

用于删除 nexus 3 上的工件的 groovy 脚本(不是 nexus 2)

Jenkins Pipeline 扫描编译器警告自定义解析器被阻止

groovy - 通过名称访问变量值作为 String (groovy)

python - 如果特定测试失败,则剩余的 pytest 测试失败

java - Jelly validateButton 无法访问 Java 方法

Groovy null 小于零?

grails - 使用 GORM 获取一对多加载对象的 ID,无需再次访问数据库

django - 了解 jenkins 和 django-jenkins 的区别

docker - Jenkins 管道 dir() 指令导致 docker 容器退出

在 Windows Server 2019 中找不到 Jenkins 安装路径