Sunucuyu yeniden başlatmadan Jenkins üzerinde durdurulamaz bir zombi işi nasıl durdurulur?


178

Jenkins sunucumuzun üç gündür çalışan bir işi var, ama hiçbir şey yapmıyor. Köşedeki küçük X'e tıklamak hiçbir şey yapmaz ve konsol çıktı günlüğü de hiçbir şey göstermez. Yapım sunucularımızı kontrol ettim ve iş aslında hiç çalışmıyor gibi görünüyor.

Jenkins'e işin "tamamlandığını" bir dosya veya kilit veya başka bir şey düzenleyerek söylemenin bir yolu var mı? Çok fazla işimiz olduğu için sunucuyu yeniden başlatmak istemiyoruz.


1
Jenkins'in son sürümlerinde olduğu gibi, çözüm kabul edilmiş olarak işaretlenmiş değil. (ancak '
16'dan olan

Yanıtlar:


213

Asılı iş parçacığını kesmek üzere sunucunuzda bir komut dosyası çalıştırmak için "Jenkins'i Yönet"> "Komut Dosyası Konsolu" na gidin.

Tüm canlı iplikleri alabilir Thread.getAllStackTraces()ve asılı olanı kesebilirsiniz.

Thread.getAllStackTraces().keySet().each() {
  t -> if (t.getName()=="YOUR THREAD NAME" ) {   t.interrupt();  }
}

GÜNCELLEME:

İş parçacığı kullanan yukarıdaki çözüm, daha yeni Jenkins sürümlerinde çalışmayabilir. Donmuş boru hatlarını kesmek için bunun yerine bu çözüme ( alexandru-bantiuc tarafından ) bakın ve çalıştırın:

Jenkins.instance.getItemByFullName("JobName")
                .getBuildByNumber(JobNumber)
                .finish(
                        hudson.model.Result.ABORTED,
                        new java.io.IOException("Aborting build")
                );

48
Harika çalıştı! Okunan herkes için, yöntem adıyla önce yukarıdakileri çalıştırarak iş parçacığı adlarını görüntüleyebilirsinizt -> println(t.getName());
Phil

2
Yine de yukarıdaki senaryo ile çalışmıyor, Senaryoları alıyor ama aynı öldürmüyor.
Raghav S

2
içindeki adla eşleştikten sonra belirli bir dizinin adını yazdırabiliyor t.getName()=="SOME NAME"musunuz?
Zahra

3
Bu da bana yardımcı olmaz - iplik kesmeye () tepki vermez.
Zitrax

2
benim için kesme yeterli değildi, t.stopbunun yerine aramak gerekiyordu :Thread.getAllStackTraces().keySet().each() { t -> if (t.getName()=="YOUR THREAD NAME" ) { println(“Found, stopping now… “); t.stop(); } }
cuma

258

Aynı sorunu yaşadım ve Jenkins Console ile düzelttim.

"Jenkins'i Yönet"> "Komut Dosyası Konsolu" na gidin ve bir komut dosyası çalıştırın:

 Jenkins .instance.getItemByFullName("JobName")
        .getBuildByNumber(JobNumber)
        .finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build")); 

Sadece JobName ve JobNumber'ınızı belirttiniz.


Bunu diğer işleri başlatan bir Pipeline işi ile yaptım. Sunucu çöktü, diğer işler gitti, ama boru hattı işi hala bir zombi idi. İlk önce kabul edilen cevabı denedim, boşuna. @ Alexandru'nun komutunu birkaç kez çalıştırmak zorunda kaldım, boru hattı işinin ilerleme çubuğunun biraz hareket ettiğini her gördüğümde. Sonunda boru hattı işi öldü ve iyi önlemler için de sildim.
Amedee Van Gasse

18
Bu, çok dallı projeler için de harika çalışıyor, ancak anahtar JobName'i Jenkins.instance.getItemByFullName ("<project-name> / <branch-name>") olarak
belirtmektir

22
Bu cevap sorunumu çözmeme yardımcı oldu. Boru hattı tamamen zombi idi. Yukarıdaki komut dosyası işe yaramadı ve birkaç jenkin yeniden başlatıldıktan sonra bile boru hattı hala çalışıyordu. Bazı iç sınıf belgeleri okumak ve betiğim şöyle görünüyordu bir delete () yöntemi bulundu: Jenkins.instance.getItemByFullName("JobName").getBuildByNumber(JobNumber).delete();Bu ve başka bir jenkins yeniden başlattıktan sonra zombi derleme nihayet gitti gitti.
Szymon Sadło

5
finishAbstractBuild ne de FreeSyleBuild ne de MavenModulesetBuild'de bir yöntem yok
Jakub Bochenski

3
Bu komut dosyasını yürütürken herhangi bir fikrim var mı? groovy.lang.MissingMethodException: No signature of method: hudson.model.FreeStyleBuild.finish() is applicable for argument types: (hudson.model.Result, java.io.IOException) values: [ABORTED, java.io.IOException: Aborting build] Possible solutions: find(), findAll(), find(groovy.lang.Closure) at
Tien Dung Tran

31

Çok şubeli bir Boru Hattı -job (ve bir Jenkins-yönetici iseniz) varsa, şu senaryoyu Jenkins Betik Konsolu'nda kullanın :

Jenkins.instance
.getItemByFullName("<JOB NAME>")
.getBranch("<BRANCH NAME>")
.getBuildByNumber(<BUILD NUMBER>)
.finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"));

Gönderen https://issues.jenkins-ci.org/browse/JENKINS-43020

İşin tam adının (yolunun) ne olduğundan emin değilseniz, tüm öğelerin tam adını listelemek için aşağıdaki snippet'i kullanabilirsiniz:

  Jenkins.instance.getAllItems(AbstractItem.class).each {
    println(it.fullName)
  };

Gönderen https://support.cloudbees.com/hc/en-us/articles/226941767-Groovy-to-list-all-jobs


Buna yan not: SVN kullandığınız (ve standart sözleşmeler takip) bile, <ŞUBE ADI> gibi bir şey olacaktır dalları / my_branch
tvt173

25

Bu görev için İzleme Eklentisini kullanıyorum . Eklentinin kurulumundan sonra

  1. Jenkins'i Yönetme> Hudson / Jenkins ustasının izlenmesi
  2. Sağ taraftaki küçük mavi bağlantı olan Konuların Ayrıntılarını genişletin
  3. Asılan İş Adını arayın

    Konunun adı şu şekilde başlayacaktır

    Executor #2 for master : executing <your-job-name> #<build-number>

  4. İstediğiniz işin bulunduğu satır tablosunun en sağındaki kırmızı, yuvarlak düğmeyi tıklayın


3
Öldürüldüğü gibi diyor, ama yine sayfayı yenilediğimizde konu canlı gibi görünüyor
Raghav S

İlginç. Buna bir göz atacağım. Muhtemelen yapıya bağlıdır. Muhtemelen ANT veya Maven uzantıları ile harici süreçler başlattıysanız, bu başarısız olabilir.
cheffe

Benim için işe yarayan çözüm bu. Sadece iş parçacığı listesine girdim, işin adını aradı ve kırmızı düğmeyi tıkladı. Sunucu / izleme # konuları
Gilberto Treviño

24

Bir keresinde "Komut Dosyası Konsolu" tarafından durdurulamayan bir yapı ile karşılaştım. Sonunda sorunu şu adımlarla çözdüm:

ssh onto the jenkins server
cd to .jenkins/jobs/<job-name>/builds/
rm -rf <build-number>
restart jenkins

bu benim durumumda yardımcı oldu: Konsol üzerinden öldürme sırasında iş artık mevcut değildi (dinamik boru hattı işi, özellik dalı silindi)
mkko

24

İlk önerilen çözüm oldukça yakın. İnterrupt () yerine stop () kullanırsanız, harika bir sistem komut dosyasında sonsuzca çalışan kaçak konuları bile öldürür. Bu, bir iş için çalışan tüm yapıları öldürecektir. İşte kod:

Thread.getAllStackTraces().keySet().each() {
    if (it.name.contains('YOUR JOBNAME')) {  
      println "Stopping $it.name"
      it.stop()
    }
}

4
IMO kabul edilen cevap olmalı. Diğer tüm cevaplar benim için işe yaramadı, çünkü yapı zaten kesintiye uğramış bir durumda, ancak bazı post post adımlarında asılı. Sadece bu çözüm inşa etmeyi gerçekten durdurdu
Kutzi

1
containsBurada kullanmak yanlış ve tehlikelidir - işinizin adı "Testleri Çalıştır" ise, "Testleri Çalıştır - Entegrasyon", "Testleri Çalıştır - Birim" vb. İşleri de öldürür. Bunu kullanan herkesin ilgisiz işleri beklenmedik şekilde sonlandırır
Brandon

13

Durdurulamaz bir Boru Hattı işiniz varsa aşağıdakileri deneyin:

  1. Derleme ilerleme çubuğunun yanındaki kırmızı X işaretini tıklayarak işi iptal edin
  2. Duraklatmak için yapıdaki "Duraklat / devam ettir" i tıklayın
  3. Derlemeye devam etmek için tekrar "Duraklat / devam ettir" i tıklayın

Boru hattı işini duraklat / devam ettir

Jenkins işin sonlandırılması gerektiğini fark edecek ve inşa etmeyi durduracak


8
Bu menü öğem yok.
papaiatis

13

Komut konsolu veya ek eklentileri kullanmak zorunda kalmadan yapabilirsiniz basitçe bir yapı durdurma Şunu girerek /stop, /termveya /killtarayıcınızda inşa URL'ye sonra.

Yukarıdaki bağlantıdan kelimesi kelimesine alıntı:

Boru hattı işleri, bir yapının URL uç noktalarına bir HTTP POST isteği göndererek durdurulabilir.

  • <YAPI KİMLİĞİ URL'si> / stop - Pipeline'ı iptal eder.
  • <YAPI KİMLİĞİ URL'si> / terimi - bir yapıyı zorla sonlandırır (yalnızca durdurma işe yaramazsa kullanılmalıdır.
  • <YAPI KİMLİĞİ URL'si> / kill - bir boru hattını zorla öldürür. Bu, bir boru hattını durdurmanın en yıkıcı yoludur ve sadece son çare olarak kullanılmalıdır.

7

Derleme-zaman aşımı Eklentisi bu gibi durumlarda kullanışlı olabilir. Çok uzun sürerse işi otomatik olarak öldürür.


1
Ne yazık ki bu bizim için bir seçenek değil, çünkü günlerce çalışmamız gereken birkaç işimiz var (sormayın)
blokkie

7
Derleme zaman aşımlarını iş başına yapılandırılır.
Draco Ater

1
Hayır bir yapı ben zaman aşımı eklentisi elle "Durdur" tıklayarak olarak aynı yapıyor olarak yardımcı olabilir sanmıyorum 95 dakikaya bir zaman aşımı seti ile 3 saatten fazla sıkışmış var
Jakub Bochenski

7

Sanırım cevap vermek için çok geç ama bazı insanlara yardım ediyorum.

  1. İzleme eklentisini yükleyin. ( http://wiki.jenkins-ci.org/display/JENKINS/İzleme )
  2. JenkinsUrl / izleme / düğümlerine git
  3. En alttaki Konular bölümüne gidin
  4. Master'ın solundaki ayrıntılar düğmesine tıklayın
  5. Kullanıcı zamanına göre sırala (ms)
  6. Sonra iş parçacığının adına bakın, yapının adı ve numarası olacak
  7. Öldür

Üzgünüm resimler yayınlamak için yeterli itibarım yok

Umarım yardımcı olabilir


1
Yardım etmiyor, Öldürüldüğünü söylüyor. ama yine sayfa yeniden yüklendiğinde görebiliyorum Konu
Raghav S

Yapının iş parçacığını veya yapının bir alt dişini mi öldürüyorsunuz? Bu konunun adı nedir? Sanırım iyi olanı öldürmezsin. Yapının iş parçacığını öldürürseniz, yapının başarıyla tamamlandığını göreceksiniz.
Simon

2
Ben de iş adı vardı köle icra numarası ile ilişkili Konu öldürmeye çalıştı. Ayrıca Handling GET ile ilgili birkaç konu daha buldum ve içerdiği bilgiler Subversion ile ilgiliydi. İkisini de öldürmek de yardımcı olmadı. Sonunda yeniden başlatmak bana yardımcı oldu. Bir gözlem daha vardı, SVN ilişkisi olmayan diğer dişler fırlatılabilirdi.
Raghav S

Bu cevap, bir ay önce gönderilmiş @ kahvenin cevabının bir kopyasıdır.
t0r0X

6

En iyi cevap benim için neredeyse işe yaradı, ancak büyük bir sorunum vardı: Özellikle kötü zamanlanmış Jenkins yeniden başlatması nedeniyle çok fazla sayıda (~ 100) zombi işim vardı, bu yüzden işin adını ve yapı numarasını manuel olarak bulmak ve her zombi işi ve sonra onları elle öldürmek mümkün değildi. Zombi işlerini otomatik olarak nasıl buldum ve öldürdüm:

Jenkins.instance.getItemByFullName(multibranchPipelineProjectName).getItems().each { repository->
  repository.getItems().each { branch->
    branch.builds.each { build->
      if (build.getResult().equals(null)) {
        build.doKill()
      }
    }
  }
}

Bu komut dosyası, tüm işlerin tüm yapılarının üzerinden geçer getResult().equals(null)ve işin bitip bitmediğini belirlemek için kullanır . Kuyrukta olduğunu ancak henüz (yani yapı olmayacak çünkü iterated olmayacak başlayan bir yapı job.builds) ve dışında bir şey dönecektir zaten bitmiş bir yapı nulliçin build.getResult(). Meşru çalışan bir işin ayrıcanull , bu yüzden bunu çalıştırmadan önce öldürmek istemediğiniz çalışan işleriniz olmadığından emin olun.

Çoklu iç içe ilmekler, çok şubeli bir Boru Hattı projesindeki her depo için her dalı / PR'yi keşfetmek için gereklidir; Multibranch Boru Hatları kullanmıyorsanız, tüm işlerinize doğrudan benzer bir şeyle dönebilirsiniz Jenkins.instance.getItems().each.


3
Senaryonuzu biraz geliştirdim. runningBuilds = Jenkins.instance.getView('All').getBuilds().findAll() { it.getResult().equals(null) } runningBuilds.each { branch->branch.doKill() }
Tobi

5

Jenkins kaynağına baktım ve yapmaya çalıştığım şey imkansız görünüyor, çünkü bir işi durdurmak bir Konu kesmesi ile yapılmış gibi görünüyor. İşin neden asıldığını bilmiyorum ..

Düzenle:

Durdurulamayan işlerin olası nedenleri:

  • Jenkins sonsuz bir döngüye sıkışmışsa, asla iptal edilemez.
  • Jenkins Java VM'de bir ağ veya dosya G / Ç (uzun dosya kopyası veya SVN güncellemesi gibi) yapıyorsa, iptal edilemez.

Bu aslında imkansız değil. İşinizi çalıştıran iş parçacığını kesmek için jenkins komut dosyası konsolunu kullanabilirsiniz. Buradaki açıklamaya bakın: stackoverflow.com/a/26306081/1434041
Zahra

3

Bu gibi durumlarda genellikle jenkins-cli kullanıyorum. Kavanozu bir sayfadan indirebilirsiniz http://your-jenkins-host:PORT/cli. O zaman koş

java -jar jenkins-cli.jar delete-builds name_of_job_to_delete hanging_job_number

Yardımcı bilgi:

Ayrıca bir dizi yapıyı da geçebilirsiniz 350:400. Genel yardım çalışarak sağlanabilir

java -jar jenkins-cli.jar help

İçin Bağlam komut yardımı delete-buildsile

java -jar jenkins-cli.jar delete-builds

3

Alexandru Bantiuc'un yanıtı, yapıyı durdurmam için iyi çalıştı, ancak yöneticilerim hala meşgul görünüyordu. Meşgul yönetici durumunu aşağıdakileri kullanarak temizleyebildim

server_name_pattern = /your-servers-[1-5]/
jenkins.model.Jenkins.instance.getComputers().each { computer ->
  if (computer.getName().find(server_name_pattern)) {
    println computer.getName()
    execList = computer.getExecutors()      
    for( exec in execList ) {
      busyState = exec.isBusy() ? ' busy' : ' idle'
      println '--' + exec.getDisplayName() + busyState
      if (exec.isBusy()) {
        exec.interrupt()
      }
    }
  }
}

3

Aynı sorunu vardı ama yığın iplik yoktu. Jenkins Konsolunda bu pasajı kullanarak işi sildik. İş adını ve yapı numarasını sizinkiyle değiştirin.

def jobname = "Main/FolderName/BuildDefinition"
def buildnum = 6
Jenkins.instance.getItemByFullName(jobname).getBuildByNumber(buildnum).delete(); 

1
Bu çalışmıyor! Bu olacak sadece kilitli çalışan sürecini terk görünümden yapı ve tüm kaynakları silmek
Jakub Bochenski

3

Son zamanlarda, bir yürütücü bir boru hattı işinin "X" derlemesi tarafından günlerce işgal edilen bir düğüm / aracıyla karşılaştım, ancak bu işler sayfası "X" derlemesi artık mevcut değildi (sonraki 10 derlemeden sonra atıldı (!), boru hattı işinde yapılandırılmış). Diskte: "X" derlemesinin gerçekten gittiğini doğruladı.

Çözüm: işgalci uygulayıcının "X" derlemesini çalıştırmakla meşgul olduğunu yanlış bildiren ajan / düğümdü. Yürütücünün iş parçacığına ara verilmesi derhal serbest bıraktı.

def executor = Jenkins.instance.getNode('NODENAME').computer.executors.find {
    it.isBusy() && it.name.contains('JOBNAME')
}

println executor?.name
if (executor?.isBusy()) executor.interrupt()

Dikkate alınan diğer cevaplar:

  • @Cheffe'den cevap: işe yaramadı (bir sonraki noktaya bakın ve aşağıdaki güncelleme).
  • İle cevaplar Thread.getAllStackTraces(): eşleşen konu yok.
  • @ Levente-holló'dan gelen cevap ve tüm cevaplar getBuildByNumber() : yapı artık orada olmadığı için uygulanmadı!
  • @Austinfromboston'dan gelen cevap: bu benim ihtiyaçlarıma yaklaştı, ancak şu anda çalışan diğer yapıları da çekerdi.

Güncelleme:
Yine benzer bir durumla karşılaştım, burada bir Yürütücü (hala mevcut) bitmiş bir boru hattı yapımı tarafından günlerce işgal edildi. Bu kod pasajı çalışan tek çözümdü.


Bu benim için hile yaptı, teşekkürler! Yapı numarası zaten atıldığından diğer çözümler işe yaramadı (sadece son 5 yapılarını koruyoruz, bu yüzden job.getBuildByNumber (...) hiçbir şey döndürmedi).
L. Tischler

2

Son yarım saatte aynı sorunu yaşadım ...

Benim çok şubeli boru hattında çalışan bir zombi inşa silmek mümkün değildi. Sunucu bile UI tarafından veya hatta komut sudo service jenkins restart satırından yeniden başlatılırken yürütme engellenir ... Derleme durdurulamadı ... Her zaman yeniden belirdi.

Kullanılan Sürüm: Jenkins ver 2.150.2

Çok sinirlendim, ama ... yapının kütüğüne bakarken kütüğün sonunda araya giren bir şey buldum:

Bir zombi yapısının logfile çıktısı ve yeniden başlatmayı durdurmadı

Kırmızı işaretli kısımlar "sinir bozucu kısımlar" ... Gördüğünüz gibi, her zaman UI'den yapıyı iptal etmek istedim ama işe yaramadı ...

Ama metin ile bir köprü var Click here to forcibly terminate running steps... (ilk yeşil olan) Şimdi bağlantıya bastım ...) Bağlantı yürütüldükten sonra Still pausedbaşka bir Bağlantı ile ilgili bir mesaj belirdi Click here to forcibily kill entire build(ikinci yeşil olan) Bu bağlantıya bastıktan sonra yapı nihayet zordu öldürülen ...

Bu, herhangi bir özel eklenti olmadan çalışıyor gibi görünüyor (çok şubeli boru hattı oluşturma eklentisinin kendisi hariç).


Eğer "tüm yapıyı zorla öldürmek için buraya tıkla" linkini verdiyseniz, o zaman benim için işe yarayacağından oy kullanardım. Ne yazık ki bu çözüm, Jenkins, günlük dosyasının birkaç GB olması nedeniyle en son günlükleri gösteremediğinden değil.
mjaggard

Üzgünüz, şu anda bu günlüklere artık erişemiyorum. Yine bu hatayla karşılaşırsam, ona bir güncelleme ekleyeceğim / güncelleme çözümü. Peki tailya jenkins makinenizde bir oturum açma ve sadece bağlantıyı almak için veya bir günlük görüntüleyici kullanın?
de-jcup

3
Bu benim için çalıştı, teşekkürler! @mjaggard: Bağlantı:<a href="#" onclick="new Ajax.Request('[server]/jenkins/job/[pipeline_name]/[job_number]/kill'); return false">Click here to forcibly kill entire build</a>
kaveish

1

Birçok zombi işim vardı, bu yüzden aşağıdaki komut dosyasını kullandım:

for(int x = 1000; x < 1813; x = x + 1) {
    Jenkins .instance.getItemByFullName("JOBNAME/BRANCH")
    .getBuildByNumber(x)
    .finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"))
}

1

Bu benim için her zaman işe yarar:

Thread.getAllStackTraces().keySet().each() {
if (it.name.contains('YOUR JOBNAME')) {  
  println "Stopping $it.name"
  it.stop()
}

Funql.org'a teşekkürler


0

Aynı sorun bana iki kez oldu, tek düzeltme kanepe tomcat sunucusunu yeniden başlatmak ve derlemeyi yeniden başlatmak oldu.


0

Jkillthread adlı yazdığım bir yardımcı program , hizmeti aynı hesap altında çalıştıran makinede oturum açabildiğiniz sürece, herhangi bir Java işlemindeki herhangi bir iş parçacığını durdurmak için kullanılabilir.


0

ÇOK BASİT ÇÖZÜM

Bu sorunu görmemin sebebi httpsayfadaki yanlış bağlantıydı, bunun yerine httpsişi durdurmalıdır. Tek yapmanız gereken onclickhtml sayfasındaki özniteliği takip ederek

  1. Asılan işin (boru hattı) bir konsol günlüğünü açın
  2. (Öyle "zorla tüm yapı öldürmek için tıklayınız" görünür bağlantı (x simgesi, "Burada zorla için tıklayın adımları çalışan sonlandırmak" vs) almak için işi öldürmek için her türlü tıklayın DEĞİL anda tıklanabilir olacak)
  3. Tarayıcı konsolunu açın ( krom için üçünden birini kullanın: F12; ctrl + üst karakter + i; menü-> daha fazla araç-> geliştirici araçları )
  4. Manuel olarak veya konsolun "sayfada bir öğe seç" düğmesini kullanarak "Tüm yapıyı zorla öldürmek için burayı tıklayın" bağlantısını bulun
  5. onclickDeğerini düzenlemek için niteliğe çift ​​tıklayın
  6. Ekleme siçin httpvarhttps
  7. Değişiklikleri göndermek için enter tuşuna basın
  8. "Tüm yapıyı zorla öldürmek için burayı tıklayın" bağlantısını tıklayın

Referans için ekran görüntüsünü kullan resim açıklamasını buraya girin


0

Https: // my-jenkins / script'de Komut Dosyası konsolunu kullanma

import hudson.model.Job
import org.jenkinsci.plugins.workflow.job.WorkflowRun

Collection<Job> jobs = Jenkins.instance.getItem('My-Folder').getAllJobs()
for (int i = 0; i < jobs.size(); i++) {
  def job = jobs[i]
  for (int j = 0; j < job.builds.size(); j++) {
    WorkflowRun build = job.builds[j]
    if (build.isBuilding()) {
      println("Stopping $job ${build.number}")
      build.setResult(Result.FAILURE)
    }
  }
}

0

Bu çözümlerin hiçbiri benim için işe yaramadı. Sunucunun kurulduğu makineyi yeniden başlatmam gerekiyordu. Unkillable iş artık gitti.


-1

Sadece işi kopyalayıp eskisini silebilirsiniz. Eski yapı günlüklerini kaybetmeniz önemli değilse.


-2

İşte 2.100Blue Ocean ile bu sorunu nasıl çözdüm

  • Yüklediğim tek eklenti bitbucket içindir.
  • Sadece tek bir düğümüm var.

sshJenkins kutusuna
cd ~/.jenkins(cenkins tuttuğum)
cd job/<job_name>/branches/<problem_branch_name>/builds
rm -rf <build_number>

Bundan sonra, isteğe bağlı olarak numarayı değiştirebilirsiniz nextBuildNumber(Bunu yaptım)

Son olarak, jenkins'i yeniden başlattım ( brew services restart jenkins) Bu adım, Jenkins'i yönetme ve yükleme yönteminize bağlı olarak açıkça farklı olacaktır.


-3

Mavi okyanus kullanıcı arayüzüne girin. İşi oradan durdurmaya çalışın.


Bu ne anlama geliyor? Jenkins sunucumun böyle bir kullanıcı arayüzü yok
Nico Haase

Mavi okyanus çok yaygın Jenkins eklentidir, bu konuda okuyabilirsiniz burada .
user3360767

Bu aslında işi klasik kullanıcı arayüzünden farklı bir şekilde iptal ediyor mu? Şüpheli görünüyor.
StockB
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.