2016-12-27 23 views
5

Tôi đang cố gắng để có được một parametrized Pipeline Job trong Jenkins (2.19.4) để làm việc với các thông số kỹ thuật sau:Git kịch bản đường ống thông số

  • BRANCH_TO_BUILD Git tham số để lấy tất cả các chi nhánh có sẵn từ một gitlab kho lưu trữ cho người dùng để chọn một số
  • Kịch bản đường dẫn Groovy chạy các giai đoạn khác nhau hoạt động hoàn hảo khi được sử dụng như một Jenkinsfile từ SCM.

Các lỗi tôi nhận được có liên quan đến Git Parameter:

net.uaznia.lukanus.hudson.plugins.gitparameter.jobs.WorkflowJobWrapper getSCMFromDefinition 
SEVERE: Get repo scm from Workflow job fail 
java.lang.NoSuchMethodException: org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition.getScm() 

Theo như tôi biết Jenkins là không có khả năng thu hồi các cấu hình SCM từ kịch bản đường ống trước khi yêu cầu đầu vào tham số của.

Tôi biết có một yêu cầu tính năng mới JENKINS-39530 nhưng có cách tiếp cận khác để thực hiện việc này không?

Trả lời

1

Từ những gì tôi hiểu bạn muốn một công việc mà người dùng chọn chi nhánh. Các nhánh cần được giữ đồng bộ với các nhánh trong GitLab.

Một cách để thực hiện điều đó là với Job DSL plugin.

  1. Tạo công việc, có thể gọi là người tạo công việc, chạy mỗi X phút hoặc được kích hoạt từ GitLab.
  2. Hãy để người tạo việc làm chạy bước xây dựng DSL.
  3. DSL có thể yêu cầu GitLab với REST để lấy các nhánh. Vòng qua các chi nhánh để tạo ra các công việc đường ống.

DSL công việc sẽ trông tương tự như sau:

... 
pipelineJob("the pipeline job") { 
    parameters { 
    def branches = ['[Choose]'] 
    getJson(server+ "/rest/request/to/gitlab...") 
    .values 
    .each { branch -> 
    if (branch.displayId.startsWith('feature')) { 
    branches.push(branch.displayId) 
    } 
    } 
    choiceParam(
    'branch', 
    branches, 
    'Pick a branch.') 
    } 
... 
Các vấn đề liên quan