нет такого dsl-метода "стадий" при вызове "шаблонного" скрипта - PullRequest
0 голосов
/ 25 мая 2020

Upfront, да, я много искал и много видел, в том числе на StackOverflow, но пока ничего не помогло. Я пытался определить декларативный конвейер в общей библиотеке, но не могу обойти определение basi c.

Поэтому я написал простой vars/pipi.groovy внутри моей (существующей) общей библиотеки

def call(config) {
    pipeline {
        stages {
            stage('Prepare') {
                steps { echo "preparing ${config.item}" }
            }
            stage('Build') {
                steps { echo "building ${config.item}" }
            }
        }
    }
}

Затем я создал новое задание конвейера, содержащее только следующий сценарий

@Library('my-jenkins-library@embeddedpipeline') _
pipi [:]

Я понимаю, что это может быть из-за какого-то скриптового или декларативного конвейера, но я не понимаю, почему он не должен работать. У меня нет объявления узла или чего-то еще, и конфигурация конвейера кажется достаточно допустимой. Сначала я столкнулся с ошибкой, потому что у меня там были другие элементы, и по какой-то причине он допускает наличие блока parameters, но не говорит agent, но сохранение краткости примера по-прежнему не работает для меня.

Кстати, библиотека - это ссылки из включающей папки,

Любые предложения приветствуются

Редактировать 1: Трассировка стека (немного отфильтрована)

    [Pipeline] End of Pipeline
    java.lang.NoSuchMethodError: No such DSL method 'stages' found among steps [xx] or symbols [yyy] or globals [zzz, pipeline, pipi]
     at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:203)
     at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
     at sun.reflect.GeneratedMethodAccessor323.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
     at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
     at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:157)
     at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
     at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:155)
     at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
     at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:159)
     at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129)
     at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
     at pipi.call(/xxx/mylib/vars/pipi.groovy:8)
     at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:59)
     at pipi.call(/xxx/mylib/vars/pipi.groovy:2)
     at WorkflowScript.run(WorkflowScript:3)
     at ___cps.transform___(Native Method)
     at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
     at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
     at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
     at sun.reflect.GeneratedMethodAccessor280.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.ClosureBlock.eval(ClosureBlock.java:46)
     at com.cloudbees.groovy.cps.Next.step(Next.java:83)
     at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
     at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
     at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129)
     at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268)
     at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
     at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34)
     at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59)
     at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
     at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58)
     at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:182)
     at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332)
     at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83)
     at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244)
     at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232)
     at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
     at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
     at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
     at java.lang.Thread.run(Thread.java:748)
    Finished: FAILURE

1 Ответ

0 голосов
/ 25 мая 2020

это работает для меня:

В jenkinsfile:

@Library('jenkinssharedlibrary@feature/your-branch-name') _

templateFromJenkinsLibrary([
parameter1:"${params.parameterDefinedInJenkinsJob}",
parameter2:'arbitraryValue',
agent: 'testagentlabel'
]

затем в библиотеке jenkins vars / templateFromJenkinsLibrary. groovy:

import com.ownlibraryDefinedInSrc.someFunction

def call(Map<String, String> passedConfigurationMap) {

    pipeline {
        agent {
            label passedConfigurationMap.agent
        }
        environment {
            PROJECT_VERSION = "${passedConfigurationMap.projectVersion}"
        }
        tools {
            //use this to control the build configurations like maven and jdk used under SCV
            jdk passedConfigurationMap.javaVersionToUse
        }
        stages {
            stage('Validate Parameters') {
                steps {
                    script {
                        echo "Validate"
                    }
                }
            }
   }

ps : нет IDE под рукой, поэтому я надеюсь, что у меня есть синтаксические ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...