Làm thế nào để đặt lại số bản dựng trong jenkins?


89

Tôi đang sử dụng Jenkins và Gradle để xây dựng dự án java của mình.

Mỗi khi tôi xây dựng dự án của mình, tôi nhận được một số bản dựng mới trên màn hình Jenkins.

Sau đây là thông tin bản dựng Jenkins của tôi:

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45

Tôi muốn đặt lại số bản dựng Jenkins như:

Success > Console Output  #1    03-Jan-2014 12:02:45

Làm cách nào để đặt lại số bản dựng trong Jenkins?

Câu trả lời:


161

Có thể được thực hiện dễ dàng hơn từ bảng điều khiển script thú vị. Truy cập http: // your-jenkins-server / script Trong cửa sổ script, nhập:

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)

6
hoặc thông qua clijava -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
ykhrustalev

3
Đây chắc chắn là câu trả lời tốt nhất. Bạn thậm chí không cần vòng lặp xóa nếu bạn chỉ muốn đặt số.
Nick

Vì một số lý do, điều này chỉ thực hiện xóa trên bản dựng mới nhất, tuy nhiên, điều sau đã làm việc với tôi: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

Một câu hỏi noob .. làm thế nào tôi biết chính xác tên công việc.
Ammar Mujeeb

@AmmarMujeeb truy cập trang tổng quan Jenkins của bạn và bạn sẽ thấy tên công việc ở đó. Bạn cũng có thể đi đến /var/lib/jenkins/jobs/trên Linux và tên của thư mục có tên công việc chính xác
rickrizzo

62

Từ đây

Với Hudson công việc của bạn có tên là FooBar,

  • đổi tên FooBar thành FooBar-Copy
  • tạo một công việc mới có tên FooBar, sử dụng tùy chọn 'Sao chép công việc hiện có', từ FooBar-Copy
  • xóa FooBar-Copy

35
  • Xóa sạch không gian làm việc đầu tiên và loại bỏ các bản dựng trước đó.
    • Trên máy chủ điều hướng đến công việc ví dụ. 'var / lib / jenkins / Jobs / myJob' xóa không gian làm việc & xây dựng dirs cũng như mọi tệp thăm dò ý kiến, tệp lastSuccessful, lastStable, v.v. Bạn chỉ nên có config.xml và lastBuildNumber.
    • Tắt jenkins bằng cách sử dụng dịch vụ nào đó như dừng dịch vụ jenkins
    • Chỉnh sửa tệp có tên nextBuildNumber , chèn 1 thay vì số bản dựng hiện tại
    • Khởi động lại jenkins, bắt đầu dịch vụ jenkins
    • Đăng nhập vào jenkins và bắt đầu công việc của bạn và nhấn xây dựng. Nên bắt đầu xây dựng công việc số 1

1
Điều này rất hữu ích. Cảm ơn.

23

Nếu bạn muốn đặt số bản dựng tiếp theo, có plugin "NextBuildNumber" cho điều đó. Nhưng điều này sẽ không hiệu quả trong trường hợp của bạn vì số bản dựng bạn cần, là 1, ít hơn số bản dựng hiện tại của bạn.

Ở đây cần xóa sạch tất cả các bản dựng trước đó. Bạn có thể làm điều này bằng cách chạy tập lệnh đơn giản này Đi tới -> Quản lý Jenkins -> Bảng điều khiển tập lệnh

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }

Bây giờ bạn có thể đặt số bản dựng tiếp theo thành 1 và chạy bản dựng. Nó sẽ bắt đầu bằng 1 . :) Nó đơn giản mà.

Cập nhật - Jenkins hiện có plugin Lịch sử công việc Purge để hoàn thành việc này một cách dễ dàng nhất. Kiểm tra trang để biết thêm chi tiết - https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

Để tổng quát hơn, hãy đặt lại số bản dựng của bạn thành N( Nkhông nhất thiết phải là 1):

  • Xóa mọi bản dựng hiện có ở đâu buildNumber >= N.
  • Chỉnh sửa Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Đặt số nó chứa thành N.
  • Từ Jenkins, chọn Manage Jenkins -> Reload Configuration from Disk.

Hãy chắc chắn rằng bạn đọc khiếm khuyết này trước khi chọn "cấu hình Nạp lại từ đĩa" - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500

6

Mở rộng câu trả lời được chấp nhận, đây là cách thực hiện cho tất cả các dự án cùng một lúc:

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  

4

Như một phần mở rộng cho câu trả lời xuất sắc của @ antweiss, chúng ta thực sự có thể đi xa hơn ...

Không cần phải xóa toàn bộ Lịch sử xây dựng, nếu không muốn, bạn chỉ cần quay ngược thời gian về điểm trước đó:

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)

Nếu bạn muốn có một chạy giả, để kiểm tra những gì nó sẽ làm gì, mà không thực sự làm việc đó, chỉ cần ghi chú bên ngoài build.delete()item.updateNextBuildNumber(resetNumberTarget)dây chuyền và bỏ ghi chú các lệnh in khác nhau.


Tài liệu: Khó tìm thấy thông tin chi tiết về những vật thể này, nhưng tôi đã xác định được những điều sau:


1

Bạn có thể sử dụng nexBuildNumberplugin hoặc chỉ cần sửa đổi nexBuildNumbertệp để đặt lại số bản dựng. Sau đây là các bước bạn cần thực hiện:

  • Đi tới .jenkins/Jobs/<YourJobName>/build/, sao lưu thư mục này (nếu bạn cần sử dụng sau này) và xóa thư mục xây dựng .

Lưu ý: Khi bạn dọn dẹp các bản dựng cũ, bạn sẽ mất lịch sử bản dựng và chúng không còn khả dụng trên bảng điều khiển Jenkins nữa.

  • Tải lại cấu hình (Jenkins -> Quản lý Jenkins).
  • Đặt phiên bản xây dựng tiếp theo thành 1 bằng cách sử dụng trình cắm thêm Số phiên bản tiếp theo hoặc sửa đổi nextBuildNumbertệp trong thư mục công việc của bạn.

0

Tôi đã tìm thấy một cách dễ dàng để làm điều này.

  1. Xóa sạch không gian làm việc của bạn.
  2. Đi tới từng bản dựng được lưu trên Jenkins và xóa nó.
  3. Đặt số bản dựng thành 1 rồi tạo bản dựng.

Jenkins sử dụng bản dựng trước để xác định số bản dựng tiếp theo, nếu số bản dựng bạn nhập thấp hơn số bản dựng trước đó, Jenkins sẽ tự động tăng số bản dựng của bạn lên cao hơn bản dựng trước đó. Vì vậy, ở đây chúng tôi chỉ



-1

Để đặt lại số bản dựng của tất cả các công việc:

Jenkins.instance.getAllItems(AbstractProject.class).each {
    item = Jenkins.instance.getItemByFullName(it.fullName)
    //THIS WILL REMOVE ALL BUILD HISTORY
    item.builds.each() { build ->
        build.delete()
    }
    item.updateNextBuildNumber(1)
}
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.