私はハドソン/ジェンキンスの仕事の名前を変更しようとしました。ただし、名前の変更に失敗しました。
ジョブの名前を変更する方法はありますか?
次の手順に従って、選択したジョブの名前をjenkins UIから変更できます。
job>configure>Advanced Project Options>Display Name
他の方法は、Jenkins/hudson
サーバー上のディレクトリの名前を変更してから、restart
the Jenkins
に名前を変更することです。
完全を期すために、Groovy script console を使用した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は構成を再ロードする必要があります。
ジョブの名前を変更する通常の方法:
Configure画面に移動し、右上のProject nameフィールドを編集します。次に、保存をクリックし、はいをクリックして確認します。 (do notApplySaveの横のボタンをクリックすると、エラーメッセージが表示されます:- JENKINS-17474 )
表示名を変更しても、ジョブの名前は変更されず、表示方法のみが変更されます。たとえば、検索ボックスを介して元の名前で引き続き検索され、URLにも表示されます。
ファイルシステムレベルでディレクトリの名前を変更する必要はありません。
copy from
既存のジョブ。copy from
名前を変更するジョブ。これで、名前が異なる同一のジョブができました。
私が通常選択する要件に応じて:
Job>Configure-modifyプロジェクト名プロパティ-プロジェクトの詳細オプション、ヒット詳細...、値を設定for表示名
次に、ジョブを保存します。ファイルシステムレベルで名前を変更する必要はありません。
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())
}
}
}
関数 Job.previousNames()
を使用して、[ジョブジェネレーター](ジョブジェネレータープラグイン)(ファクトリー)内でGroovyスクリプトを使用して複数のジョブの名前を変更します。
次の例では、ジョブの名前を変更しますci.*_2
からci.*
(末尾の_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')
}
}
}