2012-06-22 28 views
58

Tôi đang cố gắng thực thi một kịch bản trình bao nếu một trong hai việc xây dựng vượt qua hoặc không thành công sau khi xây dựng trong Jenkins. Tôi không thể thấy tùy chọn này trong quá trình tạo 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.Thực thi Shell Script sau khi xây dựng bài viết trong Jenkins

Trả lời

48

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

Jenkins - "Post build task" option

+36

Tôi khuyên bạn nên sử dụng [plugin PostBuildScript] (https://wiki.jenkins-ci.org/display/JENKINS/PostBuildScript+Plugin) thay vì chỉ cần chạy tập lệnh. Nó đơn giản và mạnh mẽ hơn nếu bạn không cần phải điều kiện hóa đầu ra bản ghi. 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

+8

Cũng lưu ý rằng plugin Post Build Task đặt toàn bộ đầu ra bàn điều khiển vào bộ nhớ để thực hiện kiểm tra có điều kiện ... có thể chiếm nhiều bộ nhớ nếu có hàng trăm công việc tạo ra nhiều đầu ra ... do plugin này ... – grayaii

+1

Plugin PostBuildScript đã bị tạm ngưng. – Upen

0

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

+0

làm thế nào tôi có thể kích hoạt các kịch bản nếu xây dựng thất bại hoàn toàn dựa trên một trong hai kịch bản shell thực thi tôi có theo nhiệm vụ công việc của tôi? Cảm ơn bạn – kforkarim

+0

Suy nghĩ về điều này, có thể dễ dàng kiểm soát hơn trong chính kịch bản dựng. Bạn đang sử dụng khung công tác xây dựng nào? –

+0

Sử dụng tập lệnh shell để tạo khung iOS – kforkarim

3

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

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

2

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

  1. Tạo tác vụ theo lô trong dự án.
  2. Thêm tùy chọn sau khi tạo tác vụ "Gọi hàng loạt", chọn cùng một dự án.

Một giải pháp thay thế cũng có thể là Post build task plugin.

9

Bạn cũng có thể chạy các lệnh tùy ý bằng cách sử dụng Groovy Post Build - và điều đó sẽ cho bạn nhiều quyền kiểm soát khi chúng chạy và v.v. Chúng tôi sử dụng điều đó để chạy tập lệnh shell 'finger of blame' trong trường hợp các bản dựng không thành công 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 sẽ đưa người cuối cùng ngày xây dựng ổn định và thời gian hiện tại như các thông số để nó có thể đi điều tra những người có thể đã phá xây dựng, nhưng bạn có thể chạy bất cứ lệnh mà bạn thích trong một thời trang tương tự)

Các vấn đề liên quan