2016-07-22 53 views
7

Kod olarak jenkins boru hattının bir kısmını yapmaya çalışıyorum. Github kuruluşlarını taramak ve şube başına iş yaratmak için Github kuruluş klasörü eklentisini kullanıyorum. Jenkinsfile'dan alınan boru hattı işlerinin adlarını açıkça tanımlamanın bir yolu var mı? Ayrıca işler için bazı açıklamalar eklemek istiyorum.Boru hattı adını ve açıklamasını Jenkinsfile'dan ayarlayın

+0

Snippet'leri Jenkinsfile'dan gösterir misiniz? Yapı açıklaması yerine iş/proje açıklamasını değiştirmek isteyen kullanıcılar için – Jayan

+0

, bkz. Https://stackoverflow.com/questions/39200948/jenkins-multibranch-change-job-description-from-groovy – Mark

cevap

11

Aşağıdaki gibi currentBuild kullanmanız gerekir. node kısım önemli

node { 
    currentBuild.displayName = "$yournamevariable-$another" 
    currentBuild.description = "$yourdescriptionvariable-$another" 
} 

Düzenleme: bir Orijinal soru olarak işlerini yeniden adlandırma konusunda nerede inşa yeniden adlandırır üstünde. Boru hattındaki ardından komut ben Jenkinsfile benim Jenkins boru hattını tanımlamak için kabul edilen yanıt kod pasajını kullanılan çalıştı

item = Jenkins.instance.getItemByFullName("originalJobName") 
item.setDescription("This description was changed by script") 
item.save() 
item.renameTo("newJobName") 
+1

Merhaba Jayan, Teşekkürler cevap. CurrentBuild.description seçeneğini zaten denedim. Yapı Geçmişi bölümünde yapı numarası altında bir etiket olarak gösterildi. Ancak bunları, işler için "Görünüm Yapılandırması" seçeneği altında gösterilecek şekilde ayarlamaya çalışıyorum. Bu yapılabilir mi? – HarshaB

+0

Eklenti seçeneklerinde bir yol görmedi. Yukarıdaki cevap renameTo api'yi kullanmak için güncellendi (daha önce görmüş olabileceğiniz) a123 – Jayan

+0

Çok teşekkürler Jayan. Büyüleyici bir şekilde çalıştı. Tam olarak ne istediğimi. Bu komut dosyalarının Jenkins-> Süreç komut dosyası onayı altında onaylayarak çalışmasına izin verdiğimden emin olmalıydım. Onay altına yeni sınıfları manuel olarak eklemenin bir yolu var mı? Şimdi yaptığım gibi, bu betikte kullandığım sınıflar için her seferinde bir onaylama seçeneğini seçmekti. Herhangi bir sınıfı elle yazmam ve onaylamamı sağladı. – HarshaB

2

(bu uygun izinlere gerektirir) yapacak. Kod snippet'ini @NonCPS ek açıklama ile işlevlendirmek zorunda kaldım ve öğe değişkeni için def kullandı. Düğüm bölümünde değil, Jenkins parçasının köküne kod snippet'i yerleştirdim.

@NonCPS 
def setDescription() { 
    def item = Jenkins.instance.getItemByFullName(env.JOB_NAME) 
    item.setDescription("Some description.") 
    item.save() 
} 

setDescription() 
0

Bu konuda partiye geç kaldım ama bugün benim günün en geçirdiği yerin burası soru sohbet #jenkins beni zorladı. Bu sohbetten @ tang^'ya durumum için zarif bir şekilde yardım ettiğim için teşekkür etmek istiyorum. Bireysel komut yoluyla çağırır

steps { 
    script { 
     if(currentBuild.rawBuild.project.displayName != 'jobName') { 
      currentBuild.rawBuild.project.description = 'NEW JOB DESCRIPTION' 
      currentBuild.rawBuild.project.setDisplayName('NEW JOB DISPLAY NAME') 
     } 
     else { 
      echo 'Name change not required' 
     } 
    } 
} 

Bu onaylaması gerekecektir:

Aşağıdaki adımlar, bir aşamada bloke kullanmak çok şubeli Declarative boru hattında bir çocuk için iş tanımı ve iş görünen adını ayarlamak için Jenkins sanal onay yöntemi, ancak web üzerinde ana boru hattının gerçek çocuklarını yeniden adlandırmak için bulduğum her şeyden çok daha kolaydı. Unutulmaması gereken en son şey, bunun ayarlanan iş öğelerini değiştirmek için ortam değişkenlerini kullanabileceğiniz bir Jenkinsfile'da çalışması gerektiğidir.