【发布时间】:2018-04-24 12:54:40
【问题描述】:
我正在尝试在我的共享库类中编写“stash_files”和“unstash_files”方法。
-
stash是否只能在工作区工作? - 我需要先将
file.txt复制到工作区吗? - 我知道
stash获取文件名和存储名(稍后将取消存储)它在共享库中如何工作?
Jenkinsfile:
@Library('Utils')
import org.jenkins.Utils
utils = new Utils(steps)
node() {
stage('first'){
utils.doit("file.txt")
}}
共享库:
package src.org.jenkins
class Utils implements Serializable {
def steps
Utils(steps) {
this.steps = steps
}
def doit(filename){
this.steps.sh "echo hii > /tmp/$filename"
this.stash_file(filename)
}
def stash_files(filename){
this.steps.stash filename
}
def unstash_files(filename){
this.steps.unstash filename
【问题讨论】:
-
你的用例是什么,你想要完成什么?你看过
stashstep reference documentation吗? -
@mkobit 是的,我做到了。我想在存储它之前对这个文件做很多操作。因此,共享库中的功能很棒。我的用例是在不在同一个节点上的阶段之间移动这个文件。
-
知道了。因此,
stash/unstash将跨节点/工作区工作 - “隐藏文件不可用,通常在构建结束时被丢弃。”。您将需要到stash的工作区,因为这是文件的来源。与unstash相同的想法。关于如何使用stash/unstash,可能还有其他问题。 -
感谢您的信息!虽然我没有找到任何关于如何在共享库中使用它的示例,这是我的主要问题。 jenkinsfile 中的常规存储/取消存储按预期工作。
标签: jenkins shared-libraries jenkins-pipeline