2016-12-27 34 views
5

Próbuję uzyskać parametryzowane Pipeline Job w Jenkins (2.19.4) do pracy z następującymi specyfikacjami:Git skrypt rurociąg parametr

  • BRANCH_TO_BUILD Git parametrem, który wyszukuje wszystkie dostępne gałęzie z gitlab repozytorium dla użytkownika do wybierania jednego skryptu Groovy Pipeline, który uruchamia różne etapy, który działa idealnie, gdy jest używany jako plik Jenkins z SCM.

Błąd Dostaję jest związane z Git parametr:

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() 

O ile wiem Jenkins nie jest zdolny do pobierania konfiguracji SCM ze skryptu rurociągu przed prośbą o wejście parametru.

Wiem, że jest nowe żądanie funkcji JENKINS-39530, ale czy istnieje inne podejście, aby to osiągnąć?

Odpowiedz

1

Z tego co rozumiem, potrzebujesz pracy, w której użytkownik wybiera oddział. Gałęzie powinny być zsynchronizowane z odgałęzieniami w GitLab.

Jednym ze sposobów na to jest z Job DSL plugin.

  1. Tworzenie pracy, chyba nazywa praca-twórca, który kursuje co X minut, lub jest wyzwalany z GitLab.
  2. Pozwól, aby job-creator uruchomił krok budowania DSL.
  3. DSL może poprosić GitLab z usługą REST o uzyskanie oddziałów. Przeprowadź pętlę przez gałęzie, aby utworzyć zadanie rurociągu.

DSL praca będzie wyglądać podobnie do tego:

... 
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.') 
    } 
...