Jenkins yapı numarasını değiştirme


142

Bir iş tamamlandıktan sonra e-posta ile gönderilen derleme numarasını değiştirmenin bir yolu var mı? Sorun, ürün yapılarının Jenkins tarafından YAPILMAMASIdır, bu nedenle yapı numarasını (yani bir metin dosyasından) almak ve Jenkins ile yapı numarasını eşleştirmek için yapı numarasını güncellemek istiyoruz. Yapı numarasını ayarlamaya çalıştım:

set BUILD_NUMBER=45

Ancak e-posta hala Jenkins'in başlangıçta belirlediği yapım numarasını gösteriyor.

Yanıtlar:


259

Komut dosyası konsoluna (Jenkins'i Yönet -> Komut Dosyası Konsolu) erişiminiz varsa, bunu aşağıdakileri yapabilirsiniz:

Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)

7
Sorunu çözmek için bunun mükemmel çalıştığını doğrulayabilirim. Oluşturma geçmişini iki jenkins sunucusu arasında el ile kopyaladım ve nextBuildNumber yeni sunucuda yanlış. Bunu çalıştırdığımda doğru yeni nextBuildNumber ayarlamama izin verdim, jenkins config yeniden yüklemesine gerek yok.
Phil Hollenback

5
Eğer GitHub eklentisi kullanıyorsanız, "YourJobName"olduğunu "organization/repository/branchname".
Ruud

15
İşler. Değer, bina kullanılmadan şu şekilde doğrulanabilir:Jenkins.instance.getItemByFullName("YourJobName").getNextBuildNumber()
Daniel Alder

7
Bunun MultiBranch-Pipelines için de çalıştığını doğrulayabilirim. "JobName" şube sayfasının üstünde listelenmiştir: Tam proje adı: PipelineName/BranchNameöyle olurJenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45)
Markus


37

eklenti ile yapılabilir: https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin

daha fazla bilgi: http://www.alexlea.me/2010/10/howto-set-hudson-next-build-number.html

eklentiyi beğenmediyseniz:

Yapı numarasını nextBuildNumber dosyası aracılığıyla değiştirmek isterseniz, "Jenkins'i Yönetin" sayfasından "Yapılandırmayı Diskten Yeniden Yükle" seçeneğini kullanmalısınız.


2
Eklenti kullanmaya gerek yok.
david.perez

1
Teşekkürler, günümü kurtarıyorsun.
Yukio Fukuzawa

29

İş çalışma alanı klasörü altında, örneğin:

C:\Program Files (x86)\Jenkins\jobs\job_name

adında bir dosya var nextBuildNumber.

Derleme numarasını dosyada ayarlamak ve yapılandırmayı diskten yeniden yüklemek (Jenkins'i Yönet menüsü), başlattığınız bir sonraki derlemenin dosyadaki değeri BUILD_NUMBER olarak almaya zorlar.


9
NextBuildNumber dosyasını değiştirdikten sonra yapılandırmayı diskten yeniden yüklediniz (Jenkins menüsünü yönetin)?
vezenkov

Hayır! Otomatik olarak olduğunu düşündüm.
hfossli

Bu benim için mükemmel çalıştı. Etkilenmeden önce sunucuyu yeniden başlatmanız gerekir.
Hawkeye64

Boru hattını çalıştıran çok sayıda kullanıcınız varsa sunucuyu yeniden başlatmanız bir acıdır. Daha iyi bu tür bir çözüm kaçının
MorganGeek

8

Eğik Çizgi içeren şube adınız varsa ( örneğin git akışını kullanarak ), Eğik Çizgi'yi şube adı içindeki Unicode karakteri olan % 2F ile değiştirmeniz gerekir .

İşte My Pipeline-Name boru hattı ve şube bırakma / my-release-branch-name için bir örnek

Jenkins.instance.getItemByFullName("My-Pipeline-Name/release%2Fmy-release-branch-name").updateNextBuildNumber(BUILD_NUMBER)

Boru hattınız için farklı işleri (dalları) listeleyecek aşağıdaki komutu çalıştırarak bunu öğrenebildim

Jenkins.instance.getItem("My-Pipeline-Name").getAllJobs()

Umarım yardımcı olur.



1

Jenkins sunucusundaki $ {JENKINS_HOME} / jobs / job_name / nextBuildNumber dosyasını güncelleyerek derleme numarasını değiştirebilirsiniz.

CLI veya UI kullanarak yapı numarasını değiştirmek için eklenti Sonraki Yapı Numarası eklentisini de yükleyebilirsiniz


NextBuildNumber dosyasındaki derleme numarasını tek başına değiştirmenin yeterli olmadığını, "Jenkins'i Yönet" menüsündeki "Yapılandırmayı Diskten Yeniden Yükle" işlemini yürütmenin de gerekli olduğunu unutmayın.
falstaff

-4

Çevresel değişkenleri kullanarak:

$BUILD_NUMBER =4

2
Lütfen, bağırma. Teşekkür ederim.
OliBlogger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.