2017-03-14 10 views
1

私は新しいJenkins宣言型パイプラインの速度を上げようとしています。私は現在のワークフローを例として使用しています。Jenkins宣言型パイプラインを使用して他のジョブから成果物を取得する

開発者がその時点で取り組んでいるストリームに応じて、複数のビルドを実行する可能性があります。たとえば、ライブ用の修正プログラムがテスト中であるなど、異なるビルドを異なる環境に展開します。リリースは開発環境にある可能性があります。

これはJenkinsの以前のバージョン+プロモーションプラグインでうまくいきました。特定のビルドを特定の環境のデプロイメントジョブに単純にプロモートできるからです。グーグルがやっていたし、新しいジェンキンスパイプラインのための同等のプロモーションがあるように見えません。

これは、「ビルド」ジョブと「デプロイ」ジョブの使用に戻ります。今、私は非常に難しいプッシュされている新しい宣言型パイプラインの周りを頭を抱えようとしています。私は人工物で行き詰まってしまいました。

deploy & deployは別々のジョブになっているので、あるジョブから別のジョブにアーティファクトをコピーする必要があります。私はCopyArtifactクラスの使い方について多くの答えを見つけましたが、新しい宣言型パイプラインを使用してこれにアクセスする方法はわかりません。

pipeline { 
    agent any 
    stages { 
    stage('Build') { 
     steps { 
     sh 'echo 123 > testing.txt' 
     } 
    } 
    stage('Archive') { 
     steps { 
     milestone 10 
     archive 'testing.txt' 
     } 
    } 
    } 
} 

そして、私の「配備」パイプライン:ジェンキンス宣言パイプラインをブロックする「手順」を期待しているので、失敗し

pipeline { 
    agent any 
    stages { 
    stage('Fetch Artifact') { 
     step ([$class: 'CopyArtifact', projectName: 'Build', filter: 'testing.txt']) 
    } 
    stage('Deploy') { 
     steps { 
     sh './deploy testing.txt' 
     } 
    } 
    } 
} 

実行中

はここに私の「ビルドの」仕事です。

私が試した:

steps { 
    $class: 'CopyArtifact', projectName: 'Build', filter: 'testing.txt' 
} 

しかし、私は、 "予期しないトークン"

EDIT取得しています:クリストファーへ

おかげで、私はいくつかの進歩を遂げたが、以下できましたエラー:

java.lang.IllegalArgumentException: Could not instantiate {delegate={$class=CopyArtifact, projectName=Build, filter=testing.txt}} for CoreStep(delegate: SimpleBuildStep{ArtifactArchiver(artifacts: String, allowEmptyArchive?: boolean, caseSensitive?: boolean, defaultExcludes?: boolean, excludes?: String, fingerprint?: boolean, onlyIfSuccessful?: boolean) | Fingerprinter(targets: String) | GitHubCommitNotifier(resultOnFailure: String, statusMessage?: ExpandableMessage(content: String)) | GitHubCommitStatusSetter(commitShaSource?: GitHubCommitShaSource{BuildDataRevisionShaSource() | ManuallyEnteredShaSource(sha: String)}, contextSource?: GitHubStatusContextSource{DefaultCommitContextSource() | ManuallyEnteredCommitContextSource(context: String)}, errorHandlers?: StatusErrorHandler{ChangingBuildStatusErrorHandler(result: String) | ShallowAnyErrorHandler()}[], reposSource?: GitHubReposSource{AnyDefinedRepositorySource() | ManuallyEnteredRepositorySource(url: String)}, statusBackrefSource?: GitHubStatusBackrefSource{BuildRefBackrefSource() | ManuallyEnteredBackrefSource(backref: String)}, statusResultSource?: GitHubStatusResultSource{ConditionalStatusResultSource(results: ConditionalResult{AnyBuildResult(message?: String, state?: String) | BetterThanOrEqualBuildResult(message?: String, result?: String, state?: String)}[]) | DefaultStatusResultSource()}) | GitHubSetCommitStatusBuilder(contextSource?: GitHubStatusContextSource{DefaultCommitContextSource() | ManuallyEnteredCommitContextSource(context: String)}, statusMessage?: ExpandableMessage(content: String)) | JUnitResultArchiver(testResults: String, allowEmptyResults?: boolean, healthScaleFactor?: double, keepLongStdio?: boolean, testDataPublishers?: TestDataPublisher{}[]) | JavadocArchiver(javadocDir: String, keepAll: boolean) | Mailer(recipients: String, notifyEveryUnstableBuild: boolean, sendToIndividuals: boolean)}): java.lang.UnsupportedOperationException: no known implementation of interface jenkins.tasks.SimpleBuildStep is named CopyArtifact 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) 
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:194) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:181) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126) 
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) 
    at groovy.lang.GroovyObject$invokeMethod$1.call(Unknown Source) 
    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:151) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115) 
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:16) 
    at WorkflowScript.run(WorkflowScript:6) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.delegateAndExecute(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:163) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.executeSingleStage(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:385) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.catchRequiredContextForNode(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:179) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.catchRequiredContextForNode(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:177) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.executeSingleStage(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:384) 
    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:97) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.toolsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:284) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.toolsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:283) 
    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:95) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withCredentialsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:237) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withCredentialsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:236) 
    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:94) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inDeclarativeAgent(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:316) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inDeclarativeAgent(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:315) 
    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:93) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withEnvBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:215) 
    at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withEnvBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:214) 
    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:91) 
    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.GeneratedMethodAccessor331.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.CollectionLiteralBlock$ContinuationImpl.dispatch(CollectionLiteralBlock.java:55) 
    at com.cloudbees.groovy.cps.impl.CollectionLiteralBlock$ContinuationImpl.item(CollectionLiteralBlock.java:45) 
    at sun.reflect.GeneratedMethodAccessor723.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) 
    at com.cloudbees.groovy.cps.Next.step(Next.java:74) 
    at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30) 
    at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:165) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:328) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:80) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:240) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:228) 
    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:112) 
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 
    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:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.UnsupportedOperationException: no known implementation of interface jenkins.tasks.SimpleBuildStep is named CopyArtifact 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.resolveClass(DescribableModel.java:425) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:379) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:318) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:259) 
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:194) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:181) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126) 
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) 
    at groovy.lang.GroovyObject$invokeMethod$1.call(Unknown Source) 
    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:151) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115) 
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:16) 
    ... 35 more 
Finished: FAILURE 

答えて

0

しかし、私はのgettinよグラム「予期しないトークン」

それはトークンが予想外で、どこでどのを示してより良いは、完全なエラーメッセージが表示されていると思います。

すべてのビルドステップがstepsブロックにある必要があります。例えば、残念ながら、Copy Artifact Pluginは現在、まだ古いstep([$class: 'SomeClass'])構文(だけではなくcopyArtifactsのようなもの)を使用していますが、それはまだステップだし、そうstepsブロックの内部に行く必要があります:

stage('Fetch Artifact') { 
    steps { 
    step([$class: 'CopyArtifact', projectName: 'Build', filter: 'testing.txt']) 
    } 
} 
+0

賢明なようだおかげクリストファーを、十分なのですが、プラグインがまだ古いステップ構文を使用しているため、期待通りに機能していないため、あなたが指摘したとおりです。あなたの構文を使用すると、次の(非常に冗長な)エラーが発生します。 – Andrew

+0

[Artifact Pluginのコピー](https://plugins.jenkins.io/copyartifact)がインストールされていないようです。 –

+0

うん、それはインストールされています。groovyスクリプトを古い非宣言形式で書くことは、この問題を解決するようです。だから、今のところ、それはすべてのプラグインが追いつくまで私が行かなければならない方法だと思われる。有用な入力Christopherに感謝します。 – Andrew

関連する問題