5

Có vẻ như bây giờ bạn chỉ có thể có một Jenkinsfile đơn lẻ trong một vị trí duy nhất trong dự án của bạn khi sử dụng loại Multibranch.Dòng công việc Jenkins Multibranch cho phép chỉ định đường dẫn Jenkinsfile

Có cách nào để định cấu hình để tôi có thể đặt Jenkinsfile ở đâu đó khác với gốc của dự án dưới tên Jenkinsfile hay không. Có hy vọng, vì có tùy chọn Cấu hình cố định, có thể đây là một tính năng cho tương lai, nhưng tôi sẽ đánh giá cao tùy chọn này, như trong tình huống hiện tại, tôi không có tùy chọn để chạy mọi thứ dưới dạng một đường ống được biên dịch độc đáo do kích thước của repo. Tôi đang nghĩ đến việc có nhiều công việc Jenkins chống lại cùng một kho lưu trữ.

- Marcus

Trả lời

5

Bắt đầu với đường ống: Multibranch plugin phiên bản 2.15, bạn có thể chỉ định vị trí Jenkinsfile trong cấu hình của mình.

Xem câu trả lời của tôi tại https://stackoverflow.com/a/45172149/2141666 và thay đổi plugin tại https://wiki.jenkins.io/display/JENKINS/Pipeline+Multibranch+Plugin. Từ changelog:

2,15 (01 tháng sáu 2017)

JENKINS-34.561 Lựa chọn để chọn một kịch bản tên/lối khác hơn Jenkinsfile.

1

Tôi nghĩ rằng tôi đã gặp sự cố tương tự.

Điều bạn có thể làm là có tệp "đường ống" khác được lưu trữ ở nơi khác. Điều này có thể ở cùng một địa điểm thanh toán hoặc thanh toán khác nhau cùng nhau.

Trong tệp này, bạn có thể xác định các phương thức và bạn phải tắt bằng cách "trả lại" để Jenkinsfile bắt đầu có thể sử dụng tập lệnh thứ hai. Ví dụ:

def initialize(){ 
    wrap([$class: 'BuildUser']) { 
     env.buildUserName = "$env.BUILD_USER" 
     env.buildUserId = "$env.BUILD_USER_ID" 
     env.buildUserEmail = "$env.BUILD_USER_EMAIL" 
    } 
} 
// Has to exist with 'return this;' in order to be used as library 
return this; 

Trong Jenkinsfile sau đó bạn có thể làm như sau:

def steps 
node { 
    steps = load 'MyJenkinsPipelineScript.groovy' 
    steps.initialize() 
} 

Dựa trên bất kỳ biến môi trường bạn có thể tải các tập tin khác nhau. Tôi hy vọng điều này sẽ hữu ích.

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