Tôi đang thử nghiệm Jenkins để xem liệu nó có phù hợp với khung xây dựng và thử nghiệm của chúng tôi hay không. Tôi thấy rằng Jenkins và các plugin có sẵn của nó phù hợp với hầu hết nhu cầu của chúng tôi. Ngoại trừ việc tôi dường như không thể tìm thấy sự giúp đỡ về cách làm một loại nhiệm vụ cụ thể.Làm thế nào để chạy cùng một công việc nhiều lần song song với Jenkins?
Chúng tôi đang tạo ứng dụng cho các thiết bị được nhúng. Chúng tôi có 100 bài kiểm tra cần phải chạy trên các thiết bị này. Nếu chúng tôi chạy tất cả các thử nghiệm trên một thiết bị sau khi xây dựng thì sẽ mất vài giờ để có được kết quả. Tuy nhiên, nếu chúng tôi chạy thử nghiệm trên 100 thiết bị song song thì chúng tôi có thể nhận được kết quả trong thời gian ngắn hơn nhiều.
Tất cả các thử nghiệm sẽ có điểm xuất phát rất giống nhau. Một kịch bản thử nghiệm được gọi với địa chỉ IP của thiết bị để chạy thử nghiệm và tên người dùng/pw. Kịch bản lệnh sẽ thực hiện các kiểm tra cần thiết trên thiết bị và báo cáo trả về/thất bại cho mỗi mục kiểm tra. Tôi nghĩ rằng cách lâu dài/đau đớn của việc này là viết 100 công việc trong Jenkins, mỗi kịch bản lệnh sẽ khác nhau một cách trực tiếp (với các tham số ở trên) và chạy song song bằng cách sử dụng các plugin sẵn có. Tuy nhiên, việc duy trì tất cả các công việc này sẽ rất khó khăn trong thời gian dài. Vì vậy, cách tốt hơn để làm điều này là tạo một Job (gọi nó là child_tester) có thể lấy các tham số như: tên kịch bản lệnh thử nghiệm, địa chỉ IP của thiết bị, tên người dùng/pw, v.v. Sau đó, sử dụng một công cụ khác job (gọi nó là mother_tester) để gọi child_tester job 100 lần với các địa chỉ IP khác nhau và chạy chúng song song. Tôi sẽ cần một số cách để tích lũy tất cả các kết quả kiểm tra của mỗi lần chạy riêng lẻ của các công việc child_tester và báo cáo chúng lại cho mother_tester.
Câu hỏi của tôi là có plugin hoặc cách nào để hoàn thành điều này trong Jenkins? Tôi đã xem xét thông tin của các plugin có tên "Build Flow", "Parallel Test Executor" và "Parameterized Trigger". Tuy nhiên, chúng dường như không phù hợp với nhu cầu của tôi.
Cảm ơn sự giúp đỡ của bạn.
Trình cắm luồng xây dựng không hoạt động khi cùng một tên công việc được chạy song song. Ví dụ, xây dựng dòng chảy của tôi trông như thế này: song song ( {xây dựng ("FreestyleTest1")}, {xây dựng ("FreestyleTest1")} ) Tuy nhiên, trong trường hợp này kết quả có dạng: song song { Schedule việc FreestyleTest1 Lên lịch công việc FreestyleTest1 Build FreestyleTest1 # 29 bắt đầu Xây dựng FreestyleTest1 # 29 bắt đầu FreestyleTest1 # 29 hoàn FreestyleTest1 # 29 hoàn } công việc chạy một lần duy nhất. Nếu tôi đổi một công việc sang một công việc khác, thì cả hai đều chạy song song. – Ash
@Ash, Thú vị. Trong Jenkins 1.580.2 với Build Flow 0.16, tôi có thể lên lịch cho cùng một công việc con với các tham số khác nhau 4 lần và công việc con chạy 4 lần riêng biệt song song. –
Cảm ơn bạn về ví dụ và chi tiết. Tôi phát hiện ra rằng nếu tôi cung cấp các tham số/giá trị khác nhau cho các công việc con thì nhiều công việc con được thực thi. Nó có thể là một lỗi plugin. Tuy nhiên, công việc vẫn không chạy song song. đầu ra Ex: song song { Lên lịch công việc FreestyleTest1 Lên lịch công việc FreestyleTest1 Build FreestyleTest1 # 36 bắt đầu FreestyleTest1 # 36 hoàn Build FreestyleTest1 # 37 bắt đầu FreestyleTest1 # 37 hoàn } ..... Jenkins ban tình trạng cho thấy 37 được chờ đợi trên 36 để kết thúc, mặc dù nút có hơn 2 trình điều khiển không hoạt động. – Ash