2013-07-01 34 views
24

Khi chạy bất kỳ lệnh sudo nào từ Jenkins, tôi nhận được lỗi sau: sudo: no tty present and no askpass program specified.Các phương pháp hay nhất để tránh lỗi Jenkins: sudo: không có tty và không có chương trình yêu cầu nào được chỉ định

Tôi hiểu rằng tôi có thể giải quyết điều này bằng cách thêm một mục NOPASSWD đến file /etc/sudoers tôi mà sẽ cho phép người dùng Jenkins để chạy các lệnh mà không cần mật khẩu. Tôi có thể thêm một mục nhập như thế này:

%jenkins ALL=(ALL)NOPASSWD:/home/me/dir/script.sh 

... nhưng điều này dẫn đến các vấn đề sau: https://stackoverflow.com/questions/17414330/how-to-avoid-specifying-full-path-in-sudoers-file

tôi có thể thêm một mục nhập như thế này:

%jenkins ALL=NOPASSWD: ALL 

... nhưng điều này cho phép người dùng jenkins tránh lời nhắc mật khẩu cho các lệnh TẤT CẢ các lệnh, điều này có vẻ hơi không an toàn. Tôi chỉ tò mò về những lựa chọn của tôi ở đây, và nếu có bất kỳ phương pháp hay nhất nào tôi nên cân nhắc.

+0

Tôi không thể nhận tệp nào bạn đang thay đổi bằng lệnh này? % jenkins ALL = (ALL) NOPASSWD: /home/vts_share/test/sudotest.sh Tôi đang cố gắng sử dụng lệnh sudo cũng trong jenkins, vì vậy tôi cần biết tệp nào tôi nên chạy lệnh này? – MeM

+0

Đó là một tệp cụ thể trên máy của tôi, tôi đã chỉnh sửa bài đăng để hiển thị một tệp chung –

Trả lời

4

Bật Điều bạn có thể làm là để Jenkins chạy tập lệnh, ví dụ 'run.sh', sau đó từ bên trong tập lệnh này, bạn có thể bắt đầu makefiles và đảm bảo rằng không có lệnh sudo bên trong makefiles.

Đó là một chút rắc rối, nhưng ít nhất bạn không mạo hiểm thay đổi cài đặt bảo mật