2015-05-21 17 views
11

Tôi đang cố gắng để thực hiện một lệnh shell trong Jenkins, tôi đang làm việc trên Windows 7. Trong giao diện điều khiển đầu ra tôi có điều này:Chạy một lệnh shell trong Jenkins

Building in workspace C:\Program Files (x86)\Jenkins\workspace\test 
[test] $ sh -xe C:\Windows\TEMP\hudson6299483223982766034.sh 
The system cannot find the file specified 

FATAL: L'exécution de la commande a échoué. 
java.io.IOException: Cannot run program "sh" (in directory "C:\Program Files (x86)\Jenkins\workspace\test"): CreateProcess error=2, Le fichier spécifié est introuvable 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at hudson.Proc$LocalProc.<init>(Proc.java:244) 
    at hudson.Proc$LocalProc.<init>(Proc.java:216) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:816) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:382) 
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:97) 
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.Build$BuildExecution.build(Build.java:205) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:162) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537) 
    at hudson.model.Run.execute(Run.java:1744) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:374) 
Caused by: java.io.IOException: CreateProcess error=2, Le fichier spécifié est introuvable 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(Unknown Source) 
    at java.lang.ProcessImpl.start(Unknown Source) 
    ... 16 more 
Build step 'Exécuter un script shell' marked build as failure 
[BFA] Scanning build for known causes... 
[BFA] No failure causes found 
[BFA] Done. 0s 
Finished: FAILURE 

Bất kỳ ý tưởng?

+0

vì một số lý do tôi không nghĩ rằng việc cố gắng chạy vỏ 'sh' sẽ hoạt động trên các cửa sổ. Có lẽ bạn nên thử chạy '.bat' script thay vì kể từ khi bạn đang trên cửa sổ? – EdgeCaseBerg

Trả lời

3

Lỗi cho thấy kịch bản không tồn tại

Các tập tin không tồn tại. kiểm tra đường dẫn đầy đủ của bạn

C:\Windows\TEMP\hudson6299483223982766034.sh 
The system cannot find the file specified 

Hơn nữa, để khởi động kịch bản sh vào cửa sổ, bạn cần phải có CYGWIN cài đặt và cấu hình cũng vào đường dẫn của bạn

Xác nhận kịch bản mà tồn tại.

Into Jenkins kịch bản, thực hiện như sau để xác nhận rằng bạn có các tập tin

cd C:\Windows\TEMP\ 
ls -rtl 
sh -xe hudson6299483223982766034.sh 
+0

Tôi đang cố gắng thực hiện lệnh shell trên công việc –

+0

vâng tôi hiểu. nhưng Jenkins không thể tìm thấy lệnh shell của bạn. Bạn thậm chí có thể thực hiện các thao tác sau đây trước khi vào jenkins để xác nhận rằng bạn có thể xem tập lệnh shell.(xem cập nhật) – aorfevre

27

Đối với Windows nô lệ, hãy sử dụng Execute Windows batch command.
Đối với nô lệ giống Unix như Linux hoặc Mac, Execute shell là tùy chọn.

Execute Windows Command shell

+0

cho tôi nó đơn giản hơn để sử dụng lệnh shell đó là lý do tại sao tôi đang tìm kiếm để thực hiện một lệnh shell trên windows –

+0

Vâng, hãy thử cung cấp đường dẫn đầy đủ của 'sh' đến jenkins. Như thế này: 'C: \ Windows \ sh myfile.sh' – mainframer

+0

để rõ ràng tôi đang cố gắng sử dụng lệnh curl, tôi không thể làm điều này với lệnh windows và tôi không chắc chắn rằng có thể làm điều đó với lệnh shell trên jenkins, bất kỳ ý tưởng? –

1

Điều này xảy ra vì Jenkins không biết về đường dẫn vỏ. Trong Manage Jenkins -> System Configure -> Shell, thiết lập đường dẫn shell như

  • C: \ Windows \ system32 \ cmd.exe
+1

Cảm ơn gợi ý, nhưng không làm việc cho một hỗn hợp Linux và Windows nô lệ? Điều này sẽ được cấu hình ở cấp độ nô lệ. – Adrian

7

Theo như tôi biết, Windows sẽ không hỗ trợ vỏ kịch bản ra khỏi hộp. Bạn có thể cài đặt Cygwin hoặc Git cho Windows, vào Manage Jenkins> Configure System Shell và trỏ nó đến vị trí của tập tin sh.exe được tìm thấy trong quá trình cài đặt của họ. Ví dụ:

C:\Program Files\Git\bin\sh.exe 

Có một tùy chọn khác mà tôi đã phát hiện. Điều này là tốt hơn bởi vì nó cho phép tôi sử dụng shell trong các kịch bản đường ống với đơn giản sh "something".

Thêm thư mục vào hệ thống PATH. Nhấp chuột phải vào Máy tính, nhấp vào thuộc tính> cài đặt hệ thống nâng cao> biến môi trường, thêm C:\Program Files\Git\bin\ vào thuộc tính Đường dẫn hệ thống của bạn.

Lưu ý quan trọng: vì một số lý do tôi phải thêm nó vào đường dẫn hệ thống, thêm vào đường dẫn người dùng không hoạt động, mặc dù Jenkins đang chạy trên người dùng này.

Tuyên bố từ chối trách nhiệm: tên có thể khác đôi chút khi tôi không sử dụng Windows tiếng Anh.

+0

Đó là những gì tôi đã làm. Cygwin đã cài đặt trong C: \ cygwin. Sau đó, dưới Manage Jenkins> Configure> Shell (Shell Executable) tôi đã nhập: c: \ cygwin \ bin \ sh.exe – user1521213

+0

Cảm ơn bạn. Đây là những gì cuối cùng làm việc cho tôi. Tôi đã không chạy vào vấn đề này trước đây, nhưng tôi nghĩ rằng nó có thể là do thực tế là thời gian này xung quanh tôi cài đặt Jenkins trong một ổ đĩa riêng biệt từ nơi git được cài đặt. – bitterman

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