'unstash'没有在jenkins管道的下一步做任何事情

时间:2017-05-12 16:03:19

标签: jenkins jenkins-pipeline

我正在尝试设置Jenkins管道,它编译一些节点/ grunt东西,make和RPM,并将RPM上传到所需的repo。不知何故,我在步骤之间传递文件有困难。因此,在“RPM上传阶段”,生成的RPM不可见,无法上传。

pipeline {
    agent none
    stages {
        stage('Checkout') {
            agent { label 'master' }
            steps {
            checkout(...)
            }
        }

        stage('Build') {
            agent { docker {
                image 'custome-nodejs:4' 
                reuseNode true }
            }
            steps {
                sh 'npm install'
                sh "./build.sh build"
                stash includes: '*.rpm', name: "rpms"
            }

        }

        stage('RPM upload') {
            agent { label 'master' }
            steps {
                unstash "rpms"
                sh "./build.sh upload"
            }
        }

    }
}

相关输出

[Pipeline] stash
Stashed 1 file(s)
[Pipeline] }
...
[Pipeline] unstash
[Pipeline] sh

我们看到只有一个文件按预期存储,但下一步没有文件被释放。

有人可以解释原因吗?以及如何解决它?

1 个答案:

答案 0 :(得分:0)

我想我明白了一个问题。其中包括两件事。

1)构建脚本中的错误删除了RPM文件。所以以后不可见。 2)我不需要在这里藏匿,因为我们处于声明性管道中。使用代理而不是节点。跨越节点需要存储(我读过类似的东西)。尽管有误导性的消息,也可以在这里工作。这个

[Pipeline] unstash

也许没有把这个文件取消。它怎么会在这里出现。并且在下一步之后被提到的bug删除了。