Tôi có một kịch bản hoạt động tốt khi tôi ssh đến máy chủ để tự thực thi nó, nhưng gặp vấn đề khi Hudson , một máy chủ tích hợp liên tục, chạy nó.
Tôi đang tự động kiểm tra trên một hệ thống linux nhúng (mục tiêu). Mục tiêu được kết nối với Máy chủ A (RHEL 5) thông qua nối tiếp và được vận hành qua minicom. Máy chủ B (FC 12) xây dựng các thử nghiệm thực sự chạy trên mục tiêu và có thể ssh đến Máy chủ A. Máy chủ C (RH) lưu trữ Hudson, với Máy chủ B là nô lệ.
Tôi đã viết một tập lệnh runcript (http://linux.die.net/man/1/runscript) để làm mọi thứ cần thiết trên mục tiêu thực tế; nó khởi động hình ảnh, gắn một thư mục từ Máy chủ B và thực hiện các bài kiểm tra. Một tập lệnh bash trên Máy chủ B gọi minicom với tập lệnh runcript cùng với một số hành động đồng hành. Tôi có một tập lệnh bash trên Máy chủ B sử dụng
ssh -t -t ServerA bashScript.sh
để có được những bài kiểm tra chạy trên mục tiêu. Tôi đang ở trên Máy chủ C, tôi có thể thực hiện các thử nghiệm đó bằng cách chạy đến Máy chủ B và thực thi tập lệnh ssh's đến Máy chủ A thực thi minicom với runcript. Phù Xem lại:
Máy chủ A: Hudson sử dụng cơ chế nô lệ của nó để ssh đến Máy chủ B.
Máy chủ B: kickOffTests.sh
có dòngssh -t -t ServerA runTests.sh
Máy chủ A: runTests.sh
gọi một tập lệnh perl gọiminicom -S my.script ttyE1
Target, sau khi khởi động: Gắn một thư mục từ Máy chủ B, nơi kiểm tra và vào thư mục đó. Nó gọi thêm một tập lệnh bash khác, chạy các bài kiểm tra, được biên dịch C thực thi.
Bây giờ, khi tôi thực hiện bất kỳ kịch bản nào trong số chúng, chúng sẽ làm những gì chúng cần. Tuy nhiên, khi Hudson cố gắng làm điều tương tự, trong phiên minicom, nó phàn nàn về một dòng trong "kịch bản bash khác" gọi lệnh thực thi C ./executable
, với./executable: cannot execute binary file
Tôi vẫn còn nhiều điều để tìm hiểu về linux, nhưng tôi cho rằng vấn đề này là kết quả của việc Hudson không kết nối với bảng điều khiển. Tôi không biết chính xác những gì Hudson làm để kiểm soát nô lệ của nó. Tôi đã thử sử dụng dòng export TERM=console
trong cấu hình ngay trước khi chạy kickPackTests.sh, nhưng vấn đề vẫn còn.
Bất cứ ai có thể giải thích cho tôi những gì đang xảy ra và làm thế nào tôi có thể sửa chữa nó? Tôi không thể loại bỏ bất kỳ máy chủ khỏi phương trình này. Có thể lấy minicom ra khỏi phương trình nhưng điều đó sẽ thêm một lượng thời gian không xác định cho dự án này, vì vậy tôi rất thích một giải pháp sử dụng những gì tôi đã có.