Дженкинс Использование checkout scm для клонирования репо из Github - PullRequest
0 голосов
/ 04 августа 2020

Обзор:

  • Я пытаюсь проверить код github в моем конвейере Дженкинса с несколькими конфигурациями:

    package checkout
    void call() {
        println "checkout stage ..."
        node {
            deleteDir()
            checkout scm
        }
    }
    
  • Я использую JTE (Jenkins Template Engine)

ПРОБЛЕМА:

Но Дженкинс жалуется на ошибку Step checkout from the library checkout does not have the method call(GitSCM) после построения конвейера . Найдите трассировку стека ниже:

hudson.remoting.ProxyException: org.boozallen.plugins.jte.binding.TemplateException: Step checkout from the library checkout does not have the method call(GitSCM)
    at org.boozallen.plugins.jte.binding.injectors.StepWrapper.invoke(script1596520065305271654461.groovy:98)
    at org.boozallen.plugins.jte.binding.injectors.StepWrapper.call(script1596520065305271654461.groovy:60)
    at checkout.script15965200672531305703678.call(script15965200672531305703678.groovy:19)
    at ___cps.transform___(Native Method)
    at sun.reflect.GeneratedConstructorAccessor515.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
    at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.constructorCall(DefaultInvoker.java:25)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:97)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83)
    at sun.reflect.GeneratedMethodAccessor632.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:107)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83)
    at sun.reflect.GeneratedMethodAccessor632.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
    at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:89)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:113)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83)
    at sun.reflect.GeneratedMethodAccessor632.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
    at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)

Поскольку я новичок в groovy и Jenkins, я был бы признателен, если бы вы могли поделиться каким-либо подлинным решением или идеей.

1 Ответ

0 голосов
/ 06 августа 2020

Я обнаружил свои проблемы и опубликую их здесь, чтобы их могли использовать такие новички, как я:

Мне нужно было внести следующие изменения и повторно запустить сборку jenkins, чтобы исправить проблему:

  1. Переместите ключевое слово node в jenkinsfile шаблона в /templates/jenkinsfile

    node('<executer node>') {
     scm_checkout()
    }
    
  2. Обновите файл pipeline_config. groovy в каталоге /templates/:

    libraries {
      merge = true
      scm_checkout
    }
    
  3. Обновите имя каталога библиотеки до scm_checkout. каталог и имя файла должны отличаться от формы проверки, чтобы избежать ссылки checkout(scm) на неправильную библиотеку.

  4. Библиотека проверки должна быть в libraries/scm_checkout/scm_checkout.groovy, а ее содержимое выглядит следующим образом:

    void call() {
        println "checkout stage ..."
    
        deleteDir()
    
        def checkout = checkout(scm)
    
    
    } 
    
...