35

我试图重命名一个 hudson/jenkins 工作。但是它未能重命名。

有什么办法可以重命名工作吗?

4

8 回答 8

67

您可以按照以下步骤通过 jenkins UI 重命名选定的作业:

job>configure>Advanced Project Options>Display Name

另一种方法是重命名Jenkins/hudson服务器上的目录,然后restartJenkins.

于 2013-01-30T12:07:07.250 回答
22

为了快速理解,我使用了一些截图:

我使用 Jenkins 版本:2.148

第1步:

在主屏幕/工作列表上,只需单击工作选项。

在此处输入图像描述

或者

只需打开工作详细信息,您将看到左侧的重​​命名选项。

在此处输入图像描述

第2步:

输入新名称,然后单击重命名按钮

在此处输入图像描述

于 2019-02-04T06:05:47.527 回答
17

为了完整起见,想提一下使用 Groovy脚本控制台更新 Hudson 作业名称:

// Groovy script to rename job in Hudson
import hudson.model.*;

def JOB_PATTERN = ~/^MY_JOB.*$/; //find all jobs starting with "MY_JOB".
def NEW_PART = "_NEW"

(Hudson.instance.items.findAll { job -> job.name =~ JOB_PATTERN }).each { job_to_update -> 
    println ("Updating job " + job_to_update.name);
    def new_job_name = job_to_update.name + NEW_PART; //Append new part to the job name
    println ("New name: " + new_job_name);
    job_to_update.renameTo(new_job_name);
    println ("Updated name: " + job_to_update.name);
    println("="*80);
}

如果您需要同时更新数十个作业,这将很有帮助。

注意:以下代码将不起作用:

job_to_update.name = new_job_name;
job_to_update.save();

将作业名称设置为新并保存配置不会重命名当前作业,而是使用新名称创建作业配置的副本。此外,在这种情况下,可能存在损坏的引用,因此 Hudson 需要重新加载配置。

于 2013-04-29T16:34:56.830 回答
11

重命名作业的常规方法:

转到配置屏幕并编辑顶部的项目名称字段。然后单击Save并单击Yes确认。(不要点击Save 旁边的Apply按钮这会给你一个错误信息:JENKINS-17474

更改显示名称不会重命名作业,只会更改其显示方式。例如,它仍会通过搜索框在其原始名称下找到,并且也会显示在 url 中。

在文件系统级别重命名目录实际上应该没有必要。

于 2013-04-29T16:11:20.137 回答
5
  1. 用新名称创建一个新工作,将有copy from一个现有工作的选项。
  2. copy from您要重命名的作业。
  3. 删除原始作业。

现在您有一个名称不同的相同工作。

于 2018-02-13T13:04:19.300 回答
2

我不能让 Marc 的脚本工作,所以写一个基于禁用所有作业脚本,如下所示。这是将任何带有“Findur.OpenComponent”的项目重命名为“Findur.OpenComponents”。

import hudson.model.*

renameChildren(Hudson.instance.items)

def renameChildren(items) {
  for (item in items) {
    if (item.class.canonicalName != 'com.cloudbees.hudson.plugins.folder.Folder') {     
      if (( m = item.name =~ /^(Findur.OpenComponent)(\..*)$/)){
        println(item.name)
        println m.group(1) + " " + m.group(2)
        newname = m[0][1] + 's' + m.group(2)
        item.renameTo(newname)
      }

    } else {
        renameChildren(((com.cloudbees.hudson.plugins.folder.Folder) item).getItems())
    }
  }
}
于 2016-04-07T20:41:41.457 回答
1

根据要求,我通常会选择:

作业>配置 - 修改项目名称属性 -高级项目选项,点击高级...,设置显示名称的值

然后保存作业。无需在文件系统级别重命名。

于 2013-01-30T12:31:38.010 回答
0

使用该函数Job.previousNames()在 [job generator](Job Generator Plugin) (factory) 中使用 Groovy 脚本重命名多个作业。

以下示例将作业重命名ci.*_2ci.*(它删除了结尾的_2)。

[
    [env: '01', hostname: 'host01.intranet'],
    [env: '02', hostname: 'host02.intranet'],
    [env: '03', hostname: 'host03.intranet'],
    [env: '04', hostname: 'host04.intranet'],
    [env: '05', hostname: 'host05.intranet'],
    [env: '06', hostname: 'host06.intranet'],
    [env: '07', hostname: 'host07.intranet'],
    [env: '08', hostname: 'host08.intranet'],
    [env: '09', hostname: 'host09.intranet'],
    [env: '10', hostname: 'host10.intranet'],
    [env: '11', hostname: 'host11.intranet'],
    [env: '12', hostname: 'host12.intranet'],
    [env: '13', hostname: 'host13.intranet'],
    [env: '14', hostname: 'host14.intranet'],
    [env: '15', hostname: 'host15.intranet'],
    [env: '16', hostname: 'host16.intranet'],
    [env: '17', hostname: 'host17.intranet'],
    [env: '18', hostname: 'host18.intranet'],
    [env: '19', hostname: 'host19.intranet'],
    [env: '20', hostname: 'host20.intranet'],
].each { Map config ->
    job("ci.${config.env}") {
        previousNames("ci.${config.env}_2")
        description("Continuous Integration on host ${config.env}")
        logRotator {
            numToKeep(5)
            daysToKeep(45)
        }
        label('build')
        wrappers {
            colorizeOutput('gnome-terminal')
        }
    }
}
于 2017-04-12T18:40:14.270 回答