2

私はこのようなJenkinsパイプラインを持っています

stage 'build app'
build 'app-build'
stash 'app-stash'

stage 'build container'
unstash 'app-stash'
build 'container-build'

は、Kubernetes システムから新しいノードを構築app-buildして取得します。container-build

stashを使用して、アーティファクトを からapp-buildに転送したいと考えていcontainer-buildます。

ただし、このパイプラインを実行すると、次のエラーが発生します。

[Pipeline] stash
Required context class hudson.FilePath is missing
Perhaps you forgot to surround the code with a step that provides this, such as: node
[Pipeline] End of Pipeline
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.checkContextAvailability(StepDescriptor.java:254)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:179)

nodeノードに executor が 1 つしかないため、パイプラインで使用したくありません。ディレクティブstashなしで使用できますか?node

4

2 に答える 2

2

stash/unstash を使用して、単一のパイプライン内の複数のジョブ間でファイル/データを共有できます。

node {
    stage ('HostJob')
     {
        build 'HostJob'
        dir('/var/lib/jenkins/jobs/Hostjob/workspace/') {
        sh 'pwd'
        stash includes: '**/build/fiblib-test', name: 'app' 
        }
     }

        stage ('TargetJob') {
            dir("/var/lib/jenkins/jobs/TargetJob/workspace/") {
            unstash 'app'
            build 'Targetjob'
        }
}

このようにして、ファイル/exe/データをあるジョブから別のジョブにいつでもコピーできます。パイプライン プラグインのこの機能は、データのみをローカルに保存するため、Artifact より優れています。アーティファクトはビルド後に削除されます (データ管理に役立ちます)。

ノードなしで stash を使用することはできません。:(

于 2017-05-09T12:06:31.600 に答える