【问题标题】:how to stash/unstash files in Jenkins shared library function如何在 Jenkins 共享库函数中存储/取消存储文件
【发布时间】: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

【问题讨论】:

  • 你的用例是什么,你想要完成什么?你看过stash step reference documentation吗?
  • @mkobit 是的,我做到了。我想在存储它之前对这个文件做很多操作。因此,共享库中的功能很棒。我的用例是在不在同一个节点上的阶段之间移动这个文件。
  • 知道了。因此,stash/unstash 将跨节点/工作区工作 - “隐藏文件不可用,通常在构建结束时被丢弃。”。您将需要到stash 的工作区,因为这是文件的来源。与unstash 相同的想法。关于如何使用stash/unstash,可能还有其他问题。
  • 感谢您的信息!虽然我没有找到任何关于如何在共享库中使用它的示例,这是我的主要问题。 jenkinsfile 中的常规存储/取消存储按预期工作。

标签: jenkins shared-libraries jenkins-pipeline


【解决方案1】:

这对我有用:

def stash_file(file_name, name){
    this.steps.stash ('includes': file_name, 'name': name)
}

def unstash_file(name){
    this.steps.unstash name
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多