2016-04-12 17 views
9

Tôi đang chạy hình ảnh docker sau jenkinsci/jenkins:2.0-rc-1 để thử chế độ xem jenkins 2.0 và chế độ xem "đường ống".nút cài đặt trên jenkins 2.0 bằng cách sử dụng plugin đường ống

Tôi dường như không thể cài đặt nút. Đây là kịch bản đường ống của tôi:

node { 
    //tool([name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation']) 
    sh 'echo $(whoami)' 
    sh 'node -v' 
} 

Câu trả lời khi này chạy là:

[ci] Running shell script 
+ whoami 
+ echo jenkins 
jenkins 
[Pipeline] sh 
[ci] Running shell script 
+ node -v 
/../durable-3b0b1b07/script.sh: 2: /../durable-3b0b1b07/script.sh: node: not found 

Dưới đây là những gì tôi đã cố gắng:

  • công cụ Jenkins NodeJS (mà hoạt động chính xác khi sử dụng với công việc tự do)

  • đăng nhập vào vùng chứa docker và cài đặt gật đầu e bằng tay, cho người sử dụng như nhau:

enter image description here

UPDATE:

xây dựng trên Jesse Glick của câu trả lời dưới đây, tôi đã thêm kết quả để kịch bản của tôi PATH:

node { 
    def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation' 
    env.PATH = "${nodeHome}/bin:${env.PATH}" 
    sh 'npm install' 
} 

Trả lời

16

Hoặc

node { 
    withEnv(["PATH+NODE=${tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'}/bin"]) { 
    sh 'node -v' 
    } 
} 

hoặc

node { 
    def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation' 
    sh "${nodeHome}/bin/node -v" 
} 

nên làm việc. Xem JENKINS-28718 để biết thêm các đề xuất.

Bằng cách này bạn có thể bỏ qua các tham số type và chỉ sử dụng

tool 'node-5.10.1' 

cho ngắn gọn.

+0

cảm ơn! kỳ lạ là nó bắt đầu hoạt động ngay sau khi nó được tuyên bố? tôi đã tiến thêm một bước bằng cách thêm nó vào đường dẫn cục bộ để tôi có thể chạy "nút" sau này trong tập lệnh - tôi sẽ cập nhật câu hỏi của mình ngay bây giờ – seanxe

+0

Câu trả lời hay, nhưng câu hỏi tiếp theo ... Tôi có thể bao gồm các gói npm được cài đặt trên toàn cầu trong đường dẫn? –

6

Đối tôi làm việc mã tiếp theo:

node(){ 
    def nodeHome = tool 'nodejs5' 
    env.PATH="${env.PATH}:${nodeHome}/bin" 
    ... 
    sh 'npm install' 
} 

nodejs5 là tên của công cụ được chỉ định trong cấu hình Jenkins.

+0

Bạn không muốn ghi đè các mục nhập khác trong '$ PATH'. –

+0

yep, xin lỗi xóa nhiều từ mã của tôi, phải là: 'env.PATH =" $ {env.PATH}: $ {nodeHome}/bin "' sẽ cập nhật câu trả lời –

1

Nếu có ai xảy ra để giải quyết vấn đề này trên Jenkins chạy trên Windows. Thực hiện như sau:

def nodeHome = tool 'Node.js 6.9.5' 
bat "\"${nodeHome}\"\\node.exe -v" 
bat "\"${nodeHome}\"\\npm -v" 
Các vấn đề liên quan