2016-10-06 23 views
6

Tôi đang sử dụng Jenkinsfile để tạo kịch bản cho một đường ống.Cách tắt đầu ra lệnh trong nhật ký xây dựng đường ống jenkins

Có cách nào để vô hiệu hóa in các lệnh shell được thực hiện trong nhật ký dựng không?

Dưới đây chỉ là một ví dụ đơn giản của một đường ống Jenkins:

node{ 
    stage ("Example") { 
    sh('echo shellscript.sh arg1 arg2') 
    sh('echo shellscript.sh arg3 arg4')   
    } 
} 

trong đó sản xuất đầu ra sau trong giao diện điều khiển đăng nhập:

[Pipeline] node 
Running on master in /var/lib/jenkins/workspace/testpipeline 
[Pipeline] { 
[Pipeline] stage 
[Pipeline] { (Test) 
[Pipeline] sh 
[testpipeline] Running shell script 
+ echo shellscript.sh arg1 arg2 
shellscript.sh arg1 arg2 
[Pipeline] sh 
[testpipeline] Running shell script 
+ echo shellscript.sh arg3 arg4 
shellscript.sh arg3 arg4 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
Finished: SUCCESS 

Về cơ bản tôi muốn vô hiệu hóa in ấn của các lệnh riêng của mình.

+ echo shellscript.sh arg1 arg2 
+ echo shellscript.sh arg3 arg4 

Trả lời

15

Theo mặc định, Jenkins bắt đầu tập lệnh shell có cờ -xe. -x cho phép ghi nhật ký bổ sung. -e làm cho lối ra tập lệnh nếu bất kỳ lệnh nào bên trong trả về trạng thái thoát khác không. Để đặt lại cờ, tôi đề xuất hai tùy chọn:

  1. Gọi set +x trong phần nội dung tập lệnh của bạn.
  2. Vượt qua dòng tùy chỉnh công việc mà không -x: sh('#!/bin/sh -e\n' + 'echo shellscript.sh arg1 arg2')

Đối với tùy chọn thứ hai bạn có thể định nghĩa một hàm wrapper cho thuận tiện mà sẽ thêm vào trước các kịch bản với công việc tùy chỉnh và sau đó gọi sh

def mysh(cmd) { 
    sh('#!/bin/sh -e\n' + cmd) 
} 
+0

cảm ơn, izzekil. Đề xuất # 2 đã khắc phục được sự cố. –

+0

Điều này dành cho bất kỳ ai đang làm việc cho windows => output = bat (returnStdout: true, script: '') –

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