stash\unstash 在不同目录中的正确用法
Correct usage of stash\unstash into a different directory
在我的一个阶段中,我需要在构建完成后复制两个文件夹的内容并复制到不同的目录。
我实际上正在将一个自由式作业转换为流水线,并且一直在使用工件部署器插件。仔细阅读,看起来 stash 和 unstash 命令应该有助于实现我想要实现的目标。
有人可以验证下面的方法是否正确吗?
stage('Build') {
steps {
sh '''
gulp set-staging-node-env
gulp prepare-staging-files
gulp webpack
'''
stash includes: '/dist/**/*', name: 'builtSources'
stash includes: '/config/**/*', name: 'appConfig'
dir('/some-dir') {
unstash 'builtSources'
unstash 'appConfig'
}
}
}
如果我在一个阶段更改目录,这是否意味着此后的所有其他阶段都将尝试从该目录执行命令,或者它们会返回到使用工作区默认位置吗?
谢谢
编辑
我已经意识到我真正想做的是将构建的源复制到不同的节点(运行 不同的 OS)。所以在我分享的片段中,我正在切换目录,该目录实际上是在我设置的不同机器(节点)上。
我需要用 node('my-node-name')
块包裹 dir()
块吗?我正在努力寻找示例。
谢谢
我希望它是这样的:
stash includes: 'dist/**/*', name: 'builtSources'
stash includes: 'config/**/*', name: 'appConfig'
其中dist和config是工作空间路径中的目录,所以应该是像上面这样的相对路径。
休息似乎没问题,只是提到路径“/some-dir”应该由 jenkins 用户写入(用户习惯 运行 jenkins 守护进程)。
是的,当它退出 dir 块时,它会回退到当时封闭的工作空间路径(在本例中为默认路径)。
编辑
因此,当您隐藏路径时,可以在管道后面的任何步骤中取消隐藏。所以是的,您可以将 dir
块放在 node('<nodename>')
块下。
您可以添加如下内容:
stage('Move the Build'){
node('datahouse'){
dir('/opt/jenkins_artifacts'){
unstash 'builtSources'
unstash 'appConfig'
}
}
}
在我的一个阶段中,我需要在构建完成后复制两个文件夹的内容并复制到不同的目录。
我实际上正在将一个自由式作业转换为流水线,并且一直在使用工件部署器插件。仔细阅读,看起来 stash 和 unstash 命令应该有助于实现我想要实现的目标。
有人可以验证下面的方法是否正确吗?
stage('Build') {
steps {
sh '''
gulp set-staging-node-env
gulp prepare-staging-files
gulp webpack
'''
stash includes: '/dist/**/*', name: 'builtSources'
stash includes: '/config/**/*', name: 'appConfig'
dir('/some-dir') {
unstash 'builtSources'
unstash 'appConfig'
}
}
}
如果我在一个阶段更改目录,这是否意味着此后的所有其他阶段都将尝试从该目录执行命令,或者它们会返回到使用工作区默认位置吗?
谢谢
编辑
我已经意识到我真正想做的是将构建的源复制到不同的节点(运行 不同的 OS)。所以在我分享的片段中,我正在切换目录,该目录实际上是在我设置的不同机器(节点)上。
我需要用 node('my-node-name')
块包裹 dir()
块吗?我正在努力寻找示例。
谢谢
我希望它是这样的:
stash includes: 'dist/**/*', name: 'builtSources'
stash includes: 'config/**/*', name: 'appConfig'
其中dist和config是工作空间路径中的目录,所以应该是像上面这样的相对路径。
休息似乎没问题,只是提到路径“/some-dir”应该由 jenkins 用户写入(用户习惯 运行 jenkins 守护进程)。
是的,当它退出 dir 块时,它会回退到当时封闭的工作空间路径(在本例中为默认路径)。
编辑
因此,当您隐藏路径时,可以在管道后面的任何步骤中取消隐藏。所以是的,您可以将 dir
块放在 node('<nodename>')
块下。
您可以添加如下内容:
stage('Move the Build'){
node('datahouse'){
dir('/opt/jenkins_artifacts'){
unstash 'builtSources'
unstash 'appConfig'
}
}
}