Thực thi Shell Script sau khi tạo bài đăng trong Jenkins


81

Tôi đang cố gắng thực thi một tập lệnh shell nếu quá trình xây dựng vượt qua hoặc không thành công sau khi xây dựng hậu trong Jenkins. Tôi không thể thấy tùy chọn này trong bản dựng bài đăng để thực thi một số tập lệnh shell ngoại trừ việc chạy một mục tiêu.

Câu trả lời:


67

Rất dễ dàng thực hiện với plugin tác vụ Post build .

Jenkins - Tùy chọn "Đăng nhiệm vụ xây dựng"


48
Tôi muốn giới thiệu plugin PostBuildScript thay vì chỉ chạy một tập lệnh. Nó đơn giản và mạnh mẽ hơn nếu bạn không cần điều kiện hóa đầu ra nhật ký. Ví dụ: nó cho phép chạy bất kỳ bước xây dựng nào trong các hành động sau xây dựng.
Sampo

9
Cũng lưu ý rằng plugin Post Build Task đặt toàn bộ đầu ra của bảng điều khiển vào bộ nhớ để thực hiện kiểm tra có điều kiện ... có thể chiếm rất nhiều bộ nhớ nếu có hàng trăm công việc tạo ra nhiều đầu ra ... Trình điều khiển jenkins của chúng tôi vừa bị lỗi do tới plugin này ...
greyaii

1
Plugin PostBuildScript đã bị tạm ngừng.
Upen

@Upen bạn có thể cung cấp liên kết chứng minh điều đó không?
Vadim Kotov

10

Bạn cũng có thể chạy các lệnh tùy ý bằng Groovy Post Build - và điều đó sẽ cung cấp cho bạn nhiều quyền kiểm soát khi chúng chạy, v.v. Chúng tôi sử dụng nó để chạy tập lệnh shell 'ngón tay đáng trách' trong trường hợp bản dựng không ổn định hoặc không ổn định.

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(Lệnh của chúng tôi lấy ngày xây dựng ổn định cuối cùng và thời gian hiện tại làm tham số để nó có thể điều tra xem ai có thể đã phá vỡ bản dựng, nhưng bạn có thể chạy bất kỳ lệnh nào bạn thích theo cách tương tự)


6

Nếu tôi đọc đúng câu hỏi của bạn, bạn muốn chạy một tập lệnh trong phần hành động xây dựng bài đăng của bản dựng.

Bản thân tôi sử dụng Plugin PostBuildScript để chạy git clean -fxdsau khi bản dựng có các tạo tác được lưu trữ và kết quả thử nghiệm được công bố. Nô lệ Jenkins của tôi có đĩa SSD, vì vậy tôi không có chỗ để giữ các tệp đã tạo trong không gian làm việc.


3

Bạn sẽ có thể làm điều đó với plugin Batch Task .

  1. Tạo một nhiệm vụ hàng loạt trong dự án.
  2. Thêm tùy chọn sau xây dựng "Gọi nhiệm vụ hàng loạt" chọn cùng một dự án.

Một lựa chọn thay thế cũng có thể là plugin tác vụ Post build .


1

Bạn sẽ phải thiết lập tập lệnh shell sau xây dựng như một công việc Jenkins riêng biệt và kích hoạt nó như một bước sau xây dựng. Có vẻ như bạn sẽ cần sử dụng Plugin trình kích hoạt tham số vì tùy chọn "Xây dựng các dự án khác" tiêu chuẩn chỉ hoạt động nếu quá trình xây dựng kích hoạt của bạn thành công.


làm cách nào để kích hoạt tập lệnh nếu bản dựng không thành công chỉ dựa trên một trong hai tập lệnh shell thực thi mà tôi có trong nhiệm vụ công việc của mình? Cảm ơn
topgun

Nghĩ về điều này, có thể dễ dàng kiểm soát hơn trong chính tập lệnh xây dựng. Bạn đang sử dụng khung xây dựng nào?
gareth_bowles
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.