2016-12-20 29 views
8

Tôi đang viết một công việc đường ống mà sẽ gọi một tập lệnh khác để thực hiện. Các Jenkinsfile và kịch bản tồn tại trong cùng một thư mục và công việc không tìm thấy kịch bản để chạy.Công việc đường ống Jenkins không thể tìm thấy tập lệnh do đường dẫn @tmp được tạo

Đây là đoạn mã có liên quan;

stage ('Update') { 
    try { 
     dir('jenkins/pipeline/update-jenkins-plugins-ppln') { 
      sh 'ls -l' 
      sh 'update-plugins.sh' 
     } 
} 

trả về lỗi sau;

[update-jenkins-plugins-ppln] Running shell script 
+ ls -l 
total 8 
-rw-r--r-- 1 jenkins jenkins 2441 Dec 20 09:34 Jenkinsfile 
-rwxr-xr-x 1 jenkins jenkins 506 Dec 19 14:06 update-plugins.sh 
[Pipeline] sh 
[update-jenkins-plugins-ppln] Running shell script 
+ update-plugins.sh 
/var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/[email protected]/durable-11cefdd0/script.sh: 2: /var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/[email protected]/durable-11cefdd0/script.sh: update-plugins.sh: not found 

Như bạn có thể thấy, pathing Tôi đang sử dụng là đúng vì theo ls file tôi cần update-plugins.sh là trong thư mục Tôi đã pathed tới. Tuy nhiên, vì lý do nào đó, khi thực sự tìm kiếm tập lệnh Jenkins, hãy thêm @tmp/durable-8d48734f/script.sh vào đường dẫn.

khác nhau xử lý sự cố:

  • Tôi đọc mà bạn phải kiểm tra các chi nhánh một lần nữa ngay cả khi bạn đã kiểm tra nó ra để có được những Jenkinsfile, vì vậy tôi.
  • Tôi có ssh'd vào hộp Jenkins để kiểm tra và có, kịch bản là có.

Tại sao Jenkins thêm bit @tmp và có cách nào để ngăn chặn hành vi này không?

Trả lời

1

Tôi đoán pwd của bạn không có trong PATH vì vậy bạn phải gọi nó là như thế này: sh './update-plugins.sh'

+0

Đã thử; cùng một lỗi '+ ./update-plugins.sh /var/lib/jenkins/workspace/[email protected]/durable-88ee0ed4/script.sh: 2:/var/lib/jenkins/workspace/[email protected]/durable-88ee0ed4/script.sh: ./update-plugins.sh: not found' – Alex

+0

Vậy thì điều đó thật lạ lùng. Tôi chỉ có thể đề nghị bạn thử sh 'bash update-plugins.sh' hoặc để tính toán đường dẫn đầy đủ bằng cách sử dụng đường dẫn func pwd(), nối và gọi kịch bản theo đường dẫn tuyệt đối. – izzekil

+0

Đối với tôi, nó hoạt động bằng cách sử dụng './' ở đầu tên của tập lệnh. –

2

bạn đã thử sử dụng môi trường Jenkins workspace biến WORKSPACE (tuyệt đối đường dẫn của không gian làm việc)? Với dòng của bạn sẽ trông giống như sau:

sh '${WORKSPACE}/jenkins/pipeline/update-jenkins-plugins-ppln/update-plugins.sh' 
Các vấn đề liên quan