Làm thế nào để ngăn chặn một công việc zombie không thể ngăn cản trên Jenkins mà không cần khởi động lại máy chủ?


177

Máy chủ Jenkins của chúng tôi có một công việc đã chạy được ba ngày, nhưng không làm gì cả. Nhấp vào X nhỏ ở góc không làm gì cả, và nhật ký đầu ra của bàn điều khiển cũng không hiển thị gì cả. Tôi đã kiểm tra trên các máy chủ xây dựng của chúng tôi và công việc dường như không thực sự đang chạy.

Có cách nào để nói với jenkins rằng công việc đã "xong", bằng cách chỉnh sửa một số tập tin hoặc khóa hoặc một cái gì đó? Vì chúng tôi có rất nhiều công việc, chúng tôi không thực sự muốn khởi động lại máy chủ.


1
Có vẻ như với các phiên bản gần đây của Jenkins, giải pháp không phải là phiên bản được đánh dấu là chấp nhận. (nhưng một trong số từ 16)
NicolasW

Câu trả lời:


212

Chuyển đến "Manage Jenkins"> "Script Console" để chạy tập lệnh trên máy chủ của bạn để làm gián đoạn chuỗi treo.

Bạn có thể lấy tất cả các chuỗi trực tiếp với Thread.getAllStackTraces()và làm gián đoạn chuỗi đang treo.

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

CẬP NHẬT:

Giải pháp trên sử dụng các chủ đề có thể không hoạt động trên các phiên bản Jenkins gần đây hơn. Để làm gián đoạn đường ống đông lạnh, hãy tham khảo giải pháp này (bởi alexandru-bantiuc ) thay vào đó và chạy:

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

48
Làm việc tuyệt vời! Đối với bất kỳ ai đang đọc, bạn có thể xem tên chủ đề bằng cách chạy đầu tiên ở trên, với phương thức gọit -> println(t.getName());
Phil

2
Vẫn không hoạt động với kịch bản trên, Nó nhận được các kịch bản nhưng không giết chết cùng.
Raghav S

2
Bạn có thể in tên của chủ đề cụ thể sau khi khớp tên trong t.getName()=="SOME NAME"không?
Zahra

3
Điều này cũng không giúp tôi - chủ đề không phản ứng với ngắt ().
Zitrax

2
Đối với tôi, ngắt là không đủ, t.stopthay vào đó tôi cần gọi :Thread.getAllStackTraces().keySet().each() { t -> if (t.getName()=="YOUR THREAD NAME" ) { println(“Found, stopping now… “); t.stop(); } }
Thứ Sáu

258

Tôi cũng gặp vấn đề tương tự và khắc phục nó thông qua Jenkins Console.

Chuyển đến "Manage Jenkins"> "Script Console" và chạy tập lệnh:

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

Bạn sẽ chỉ định Tên công việc và Số công việc của bạn.


Tôi đã có điều này với một công việc Pipeline bắt đầu các công việc khác. Máy chủ bị sập, các công việc khác đã biến mất, nhưng công việc đường ống vẫn là một thây ma. Lần đầu tiên tôi đã thử câu trả lời được chấp nhận, vô ích. Tôi đã phải chạy lệnh của @ Alexandru nhiều lần, mỗi lần tôi thấy thanh tiến trình của công việc đường ống di chuyển một chút. Cuối cùng, công việc đường ống đã chết và vì những biện pháp tốt tôi cũng đã xóa nó.
Amedee Van Gasse

18
Điều này cũng hoạt động rất tốt cho các dự án đa chi nhánh, nhưng điều quan trọng là chỉ định Tên công việc là Jenkins.instance.getItemByFullName ("<tên dự án> / <tên chi nhánh>")
evasilchenko

22
Câu trả lời này đã giúp tôi giải quyết vấn đề của mình. Các đường ống là một zombie hoàn toàn. Kịch bản trên không hoạt động và đường ống vẫn chạy ngay cả sau khi một vài jenkins khởi động lại. Tôi đã đọc một số tài liệu lớp bên trong và tìm thấy một phương thức xóa () để kịch bản của tôi trông như thế này: Jenkins.instance.getItemByFullName("JobName").getBuildByNumber(JobNumber).delete();Sau khi thực hiện điều này và một jenkins khác khởi động lại việc xây dựng zombie cuối cùng đã biến mất.
Szymon Sadło

5
Không có phương thức nào finishtrong AbstractBuild hay FreeSyleBuild hay MavenModulesetBuild
Jakub Bochenski

3
Tôi có vấn đề khi thực hiện kịch bản này, bất kỳ ý tưởng? 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
Tiến Dũng Trần

31

Trong trường hợp bạn có Multibranch Pipeline -job (và bạn là quản trị viên Jenkins), hãy sử dụng trong Jenkins Script Console tập lệnh này:

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

Từ https://issues.jenkins-ci.org/browse/JENKINS-43020

Nếu bạn không chắc chắn tên đầy đủ (đường dẫn) của công việc là gì, bạn có thể sử dụng đoạn mã sau để liệt kê tên đầy đủ của tất cả các mục:

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

Từ https://support.cloudbees.com/hc/en-us/articles/226941767-Groovy-to-list-all-jobs


lưu ý phụ về điều này: nếu bạn đang sử dụng SVN (và bạn tuân theo các quy ước tiêu chuẩn), <TÊN CHI NHÁNH> của bạn sẽ giống như các chi nhánh / my_branch
tvt173

25

Tôi sử dụng Plugin theo dõi cho nhiệm vụ này. Sau khi cài đặt plugin

  1. Chuyển đến Manage Jenkins> Giám sát tổng thể Hudson / Jenkins
  2. Mở rộng Chi tiết của Chủ đề, liên kết nhỏ màu xanh ở bên phải
  3. Tìm kiếm tên công việc được treo

    Tên của chủ đề sẽ bắt đầu như thế này

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

  4. Nhấp vào nút tròn, màu đỏ ở bên phải trong bảng của dòng công việc bạn muốn có


3
Nó nói như bị giết, nhưng một lần nữa khi chúng ta làm mới trang, chủ đề dường như vẫn còn sống
Raghav S

Hấp dẫn. Tôi sẽ có một cái nhìn về điều này. Có lẽ nó phụ thuộc vào việc xây dựng. Trong trường hợp bạn đã bắt đầu các quy trình bên ngoài, có thể bằng các tiện ích mở rộng ANT hoặc Maven, điều này có thể thất bại.
cheffe

Đây là giải pháp hiệu quả với tôi. Chỉ cần vào danh sách các chủ đề, đã tìm kiếm tên của công việc và nhấp vào nút màu đỏ. jenkinsServer / giám sát # chủ đề
Gilberto Treviño

24

Khi tôi gặp phải bản dựng không thể dừng được "Bảng điều khiển tập lệnh". Cuối cùng tôi đã giải quyết vấn đề với các bước sau:

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

Điều đó thực sự có ích trong trường hợp của tôi: công việc không còn tồn tại vào thời điểm giết nó thông qua bảng điều khiển (công việc đường ống động, chi nhánh tính năng đã bị xóa)
mkko 8/12/2016

24

Giải pháp đề xuất đầu tiên là khá gần. Nếu bạn sử dụng stop () thay vì interrupt (), nó thậm chí sẽ giết các luồng chạy, nó chạy vô tận trong một kịch bản hệ thống hấp dẫn. Điều này sẽ giết bất kỳ bản dựng nào, chạy cho một công việc. Đây là mã:

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

4
IMO nên là câu trả lời được chấp nhận. Tất cả các câu trả lời khác không phù hợp với tôi, vì bản dựng đã ở trạng thái bị gián đoạn, nhưng nó bị treo trong một số bước xây dựng bài. Chỉ có giải pháp này mới thực sự dừng việc xây dựng
Kutzi

1
Sử dụng containsở đây là không chính xác và nguy hiểm - nếu tên công việc của bạn là "Chạy thử", nó cũng sẽ giết bất kỳ công việc nào có tên "Chạy thử - Tích hợp", "Chạy thử - Đơn vị", v.v. chấm dứt các công việc không liên quan một cách bất ngờ
Brandon

13

Nếu bạn có một công việc Đường ống không thể ngăn cản, hãy thử như sau:

  1. Hủy bỏ công việc bằng cách nhấp vào X màu đỏ bên cạnh thanh tiến trình xây dựng
  2. Nhấp vào "Tạm dừng / tiếp tục" trên bản dựng để tạm dừng
  3. Nhấp vào "Tạm dừng / tiếp tục" lần nữa để tiếp tục quá trình xây dựng

Tạm dừng / Tiếp tục công việc đường ống

Jenkins sẽ nhận ra rằng công việc nên được chấm dứt và dừng việc xây dựng


8
Tôi không có mục menu này.
papaiatis

13

Mà không cần phải sử dụng kịch bản giao diện điều khiển hoặc plugin bổ sung, bạn có thể chỉ đơn giản là hủy bỏ một xây dựng bằng cách nhập /stop, /termhoặc /killsau khi xây dựng URL trong trình duyệt của bạn.

Trích dẫn nguyên văn từ liên kết trên:

Các công việc đường ống có thể bằng cách dừng bằng cách gửi yêu cầu POST HTTP đến các điểm cuối URL của bản dựng.

  • <URL ID BUILD> / dừng - hủy bỏ Đường ống.
  • <URL ID BUILD> / hạn - buộc chấm dứt bản dựng (chỉ nên được sử dụng nếu dừng không hoạt động.
  • <URL ID BUILD> / kill - khó giết đường ống. Đây là cách phá hoại nhất để ngăn chặn một đường ống và chỉ nên được sử dụng như là phương sách cuối cùng.

7

Build-timeout Plugin có thể có ích cho những trường hợp như vậy. Nó sẽ tự động giết công việc nếu mất quá nhiều thời gian.


1
Thật không may, đó không phải là một lựa chọn cho chúng tôi, bởi vì chúng tôi có một vài công việc đáng lẽ phải chạy trong nhiều ngày (đừng hỏi)
blokkie

7
Bạn định cấu hình thời gian chờ xây dựng trên cơ sở công việc.
Draco Ater

1
Không, chúng tôi có một build bị mắc kẹt trong hơn 3 tiếng đồng hồ với một bộ thời gian chờ đến phút 95 Tôi không nghĩ rằng các plugin timeout có thể giúp như nó đang làm giống như cách nhấn vào "Abort" bằng tay
Jakub Bochenski

7

Tôi đoán là quá muộn để trả lời nhưng tôi giúp một số người.

  1. Cài đặt plugin theo dõi. ( http://wiki.jenkins-ci.org/display/JENKINS/Monitoring )
  2. Chuyển đến jenkinsUrl / giám sát / nút
  3. Đi đến phần Chủ đề ở phía dưới
  4. Nhấp vào nút chi tiết ở bên trái của bản gốc
  5. Sắp xếp theo thời gian của người dùng (ms)
  6. Sau đó nhìn vào tên của chủ đề, bạn sẽ có tên và số của bản dựng
  7. Giết nó

Tôi không có đủ danh tiếng để đăng hình ảnh xin lỗi.

Hy vọng nó có thể giúp


1
Không giúp, Nó nói bị giết. nhưng một lần nữa khi trang tải lại tôi có thể thấy Chủ đề đó
Raghav S

Bạn có giết chủ đề của bản dựng hoặc một bản con của bản dựng không? Tên của chủ đề này là gì? Tôi đoán bạn không giết người tốt. Nếu bạn giết luồng của bản dựng, bạn sẽ thấy bản dựng hoàn thành thành công.
Simon

2
Tôi đã cố gắng giết Chủ đề liên quan đến số nô lệ thực thi cũng có tên công việc. Ngoài ra, tôi đã tìm thấy một số chủ đề khác liên quan đến Xử lý GET và thông tin có liên quan đến Subversion. Giết cả hai cũng không giúp được gì. Cuối cùng khởi động lại đã giúp tôi. Một quan sát nữa là, Các chủ đề khác mà không có hiệp hội SVN có thể bị giết.
Raghav S

Câu trả lời này là một bản sao của câu trả lời @cheffe, đã được đăng trước đó một tháng.
t0r0X

6

Các đầu câu trả lời gần như làm việc cho tôi, nhưng tôi có một vấn đề lớn: Tôi đã có một số lượng rất lớn (~ 100) công việc zombie do Jenkins khởi động lại đặc biệt kém đúng lúc, vì vậy bằng tay tìm kiếm tên công việc và xây dựng số của mỗi và mọi công việc zombie và sau đó tự tay giết chúng là không thể thực hiện được. Đây là cách tôi tự động tìm và giết các công việc zombie:

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

Kịch bản này lặp lại trên tất cả các bản dựng của tất cả các công việc và sử dụng getResult().equals(null)để xác định xem công việc đã kết thúc hay chưa. Một build đó là trong hàng đợi nhưng vẫn chưa bắt đầu sẽ không được lặp qua (kể từ đó xây dựng sẽ không được trong job.builds), và xây dựng đó là xong rồi sẽ trở lại một cái gì đó khác hơn là nullcho build.getResult(). Một công việc chạy hợp pháp cũng sẽ có kết quả xây dựng null, vì vậy hãy chắc chắn rằng bạn không có công việc đang chạy mà bạn không muốn giết trước khi chạy việc này.

Các vòng lặp lồng nhau chủ yếu là cần thiết để khám phá mọi nhánh / PR cho mọi kho lưu trữ trong dự án Đường ống Multibranch; nếu bạn không sử dụng Multibranch Pipelines, bạn có thể lặp lại tất cả các công việc của mình trực tiếp bằng một cái gì đó như Jenkins.instance.getItems().each.


3
Tôi hơi cải thiện kịch bản của bạn. runningBuilds = Jenkins.instance.getView('All').getBuilds().findAll() { it.getResult().equals(null) } runningBuilds.each { branch->branch.doKill() }
Tobi

5

Tôi đã xem nguồn Jenkins và có vẻ như những gì tôi đang cố gắng làm là không thể, bởi vì việc dừng một công việc dường như được thực hiện thông qua một ngắt chủ đề. Tôi không biết tại sao công việc bị treo mặc dù ..

Biên tập:

Lý do có thể cho các công việc không thể ngăn chặn:

  • nếu Jenkins bị mắc kẹt trong một vòng lặp vô hạn, nó không bao giờ có thể bị hủy bỏ.
  • nếu Jenkins đang thực hiện I / O mạng hoặc tệp trong máy ảo Java (chẳng hạn như sao chép tệp dài hoặc cập nhật SVN), thì nó không thể bị hủy bỏ.

Điều này thực sự không phải là không thể. Bạn có thể sử dụng bảng điều khiển kịch bản jenkins để làm gián đoạn chuỗi đang chạy công việc của bạn. Xem giải thích tại đây: stackoverflow.com/a/26306081/1434041
Zahra

3

Tôi thường sử dụng jenkins-cli trong những trường hợp như vậy. Bạn có thể tải về jar từ một trang http://your-jenkins-host:PORT/cli. Sau đó chạy

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

Thông tin phụ trợ:

Bạn cũng có thể vượt qua một loạt các bản dựng như thế nào 350:400. Trợ giúp chung có sẵn bằng cách chạy

java -jar jenkins-cli.jar help

Lệnh bối cảnh trợ giúp cho delete-buildsbởi

java -jar jenkins-cli.jar delete-builds

3

Câu trả lời của Alexandru Bantiuc đã giúp tôi ngừng việc xây dựng, nhưng những người điều hành của tôi vẫn tỏ ra bận rộn. Tôi đã có thể xóa trạng thái thực thi bận rộn bằng cách sử dụng như sau

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

Có vấn đề tương tự nhưng không có chủ đề ngăn xếp. Chúng tôi đã xóa công việc bằng cách sử dụng đoạn mã này trong Bảng điều khiển Jenkins. Thay thế tên công việc và buil dnumber bằng của bạn.

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

1
Điều này không hoạt động! Nó sẽ chỉ xóa bản dựng khỏi chế độ xem để lại quá trình đang chạy và tất cả tài nguyên bị khóa
Jakub Bochenski

3

Gần đây tôi tình cờ thấy một nút / tác nhân có một người thi hành bị chiếm đóng trong nhiều ngày bởi bản dựng "X" của một công việc đường ống, mặc dù trang công việc đó tuyên bố bản dựng "X" không còn tồn tại nữa (bị loại bỏ sau 10 bản dựng tiếp theo (!), Như cấu hình trong công việc đường ống). Xác nhận rằng trên đĩa: build "X" đã thực sự biến mất.

Giải pháp: đó là tác nhân / nút báo cáo sai rằng trình thực thi bị chiếm đóng đang bận chạy bản dựng "X". Làm gián đoạn chủ đề của người thi hành đã ngay lập tức phát hành nó.

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

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

Các câu trả lời khác được xem xét:

  • Câu trả lời từ @cheffe: không hoạt động (xem điểm tiếp theo và cập nhật bên dưới).
  • Các câu trả lời với Thread.getAllStackTraces(): không có chủ đề phù hợp.
  • Câu trả lời từ @ levente-holló và tất cả các câu trả lời với getBuildByNumber(): đã không áp dụng vì bản dựng không thực sự ở đó nữa!
  • Câu trả lời từ @austinfromboston: gần với nhu cầu của tôi, nhưng nó cũng sẽ khiến mọi công trình khác chạy vào lúc này.

Cập nhật:
Tôi đã trải nghiệm lại một tình huống tương tự, trong đó một Executor đã bị chiếm đóng trong nhiều ngày bởi việc xây dựng đường ống hoàn thành (vẫn còn tồn tại). Đoạn mã này là giải pháp làm việc duy nhất.


Điều này đã lừa tôi, cảm ơn! Các giải pháp khác không hoạt động vì số bản dựng đã bị loại bỏ (chúng tôi chỉ giữ các bản dựng lat 5, vì vậy job.getBuildByNumber (...) không trả về bất cứ thứ gì).
L. Tischler

2

Tôi đã có vấn đề tương tự vào nửa giờ trước ...

Không thể xóa bản dựng zombie đang chạy trong đường ống đa chi nhánh của tôi. Ngay cả Máy chủ khởi động lại bằng UI hoặc thậm chí từ dòng lệnh thông qua sudo service jenkins restart đã chặn thực thi ... Quá trình xây dựng không thể dừng lại được ... Nó luôn được gặt hái.

Phiên bản đã sử dụng: Jenkins ver 2.150.2

Tôi đã rất khó chịu, nhưng ... khi nhìn vào nhật ký của bản dựng, tôi thấy có gì đó xen vào cuối nhật ký:

Đầu ra logfile của một bản dựng zombie và hiển thị khởi động lại không dừng nó

Các phần được đánh dấu màu đỏ là "các phần bực bội" ... Như bạn có thể thấy tôi luôn muốn hủy bỏ bản dựng khỏi UI nhưng nó không hoạt động ...

Nhưng có một siêu liên kết với văn bản Click here to forcibly terminate running steps... (màu xanh lá cây đầu tiên) Bây giờ tôi đã nhấn liên kết ...) Sau khi thực hiện liên kết, một thông báo về đã Still pausedxuất hiện với một Liên kết khác Click here to forcibily kill entire build(màu xanh lá cây thứ hai) Sau khi nhấn liên kết này, việc xây dựng cuối cùng cũng khó khăn bị giết ...

Vì vậy, điều này dường như hoạt động mà không có bất kỳ plugin đặc biệt nào (ngoại trừ chính plugin xây dựng đa đường ống).


Nếu bạn đưa ra liên kết rằng "Nhấp vào đây để hủy toàn bộ bản dựng" thì tôi sẽ bỏ phiếu vì điều đó sẽ hiệu quả với tôi. Thật không may, giải pháp này không phải vì Jenkins không hiển thị nhật ký mới nhất vì tệp nhật ký là vài GB.
mjaggard

Xin lỗi, hiện tại tôi không còn quyền truy cập vào các bản ghi này. Nếu tôi gặp thất bại này một lần nữa, tôi sẽ thêm một nhận xét / giải pháp cập nhật. Nhưng những gì về việc thực hiện đăng nhập tại máy jenkins của bạn và chỉ cần sử dụng tailhoặc một trình xem nhật ký để có được liên kết?
de-jcup

3
Điều này làm việc cho tôi, cảm ơn! @mjaggard: Liên kết là:<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

Tôi đã có nhiều công việc zombi, vì vậy tôi đã sử dụng đoạn script sau:

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

Điều này làm việc cho tôi mọi lúc:

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

Cảm ơn funql.org


0

Đã có vấn đề tương tự xảy ra với tôi hai lần bây giờ, ghế sofa sửa chữa duy nhất là khởi động lại máy chủ tomcat và khởi động lại bản dựng.


0

Một tiện ích tôi đã viết có tên jkillthread có thể được sử dụng để dừng bất kỳ luồng nào trong bất kỳ quy trình Java nào, miễn là bạn có thể đăng nhập vào máy chạy dịch vụ trong cùng một tài khoản.


0

GIẢI PHÁP RẤT ĐƠN GIẢN

Lý do tôi thấy vấn đề này là httpliên kết không chính xác trên trang thay vì httpsđiều đó sẽ dừng công việc. Tất cả những gì bạn cần làm là chỉnh sửa onclickthuộc tính trong trang html, bằng cách làm theo

  1. Mở một nhật ký giao diện điều khiển của công việc (đường ống) đã bị treo
  2. Nhấp vào bất cứ thứ gì có sẵn để tiêu diệt công việc (biểu tượng x, "Nhấp vào đây để chấm dứt các bước đang chạy", v.v.) để có được liên kết "Nhấp vào đây để giết toàn bộ bản dựng" (hiện tại KHÔNG thể nhấp vào được)
  3. Mở bảng điều khiển của trình duyệt ( sử dụng bất kỳ một trong ba cho chrome: F12; ctrl + shift + i; menu-> thêm công cụ-> công cụ dành cho nhà phát triển )
  4. Định vị thủ công liên kết "Nhấp vào đây để hủy toàn bộ bản dựng" bằng cách sử dụng nút "chọn một phần tử trong trang" của bảng điều khiển
  5. Nhấp đúp chuột vào onclickthuộc tính để chỉnh sửa giá trị của nó
  6. Nối sđể httphttps
  7. Nhấn Enter để gửi các thay đổi
  8. Nhấp vào liên kết "Nhấp vào đây để hủy toàn bộ bản dựng"

Sử dụng ảnh chụp màn hình để tham khảo nhập mô tả hình ảnh ở đây


0

Sử dụng bảng điều khiển Script tại https: // my-jenkins / script

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

Không có giải pháp nào trong số này làm việc cho tôi. Tôi phải khởi động lại máy mà máy chủ đã được cài đặt. Công việc không thành công bây giờ đã biến mất.


-1

Bạn chỉ có thể sao chép công việc và xóa cái cũ. Nếu bạn không mất nhật ký xây dựng cũ.


-2

Đây là cách tôi khắc phục sự cố này trong phiên bản 2.100với Blue Ocean

  • Các plugin duy nhất tôi đã cài đặt là cho bitbucket.
  • Tôi chỉ có một nút duy nhất.

sshvào hộp Jenkins của tôi
cd ~/.jenkins(nơi tôi giữ jenkins)
cd job/<job_name>/branches/<problem_branch_name>/builds
rm -rf <build_number>

Sau này, bạn có thể tùy ý thay đổi số trong nextBuildNumber(Tôi đã làm điều này)

Cuối cùng, tôi đã khởi động lại jenkins ( brew services restart jenkins) Bước này rõ ràng sẽ khác nhau tùy thuộc vào cách bạn quản lý và cài đặt Jenkins.


-3

Nhập giao diện người dùng đại dương xanh. Hãy cố gắng dừng công việc từ đó.


Điều đó nghĩa là gì? Máy chủ Jenkins của tôi không có giao diện người dùng như vậy
Nico Haase

Blue Ocean là một plugin Jenkins rất phổ biến, bạn có thể đọc về nó ở đây .
dùng3360767

Điều này thực sự hủy bỏ công việc theo một cách khác với giao diện người dùng cổ điển? Có vẻ nghi ngờ.
StockB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.