相关疑难解决方法(0)

正确使用stash\unstash到另一个目录

在我的一个阶段中,我需要在构建完成后复制两个文件夹的内容并复制到另一个目录.

我实际上是将自由式作业转换为管道,并且一直在使用工件部署器插件.阅读,看起来像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'
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

如果我在一个阶段更改dir,这是否意味着此后所有其他阶段将尝试从该目录执行命令,或者他们是否回到使用工作区默认位置?

谢谢

编辑

我已经意识到我真正想要做的是将构建的源复制到不同的节点(运行不同的操作系统).所以在我的代码片段中,我已经共享,在我切换目录的地方,该目录实际上是在我设置的不同机器(节点)上.

我需要dir()node('my-node-name')块包裹块吗?我很难找到例子.

谢谢

jenkins jenkins-plugins jenkins-pipeline

17
推荐指数
1
解决办法
4万
查看次数

在jenkins管道中复制工件

我有一个Jenkins管道作业,它在第一阶段存档Artifact,然后我需要在管道构建的另一个阶段复制该Artifact

node {
  stage 'Stage 1 of build'
  // Run tests, if successful archive the artifact
  archiveArtifacts artifacts: 'build/test.js', excludes: null
 stage 'Stage 2 of build'
 // want to copy artifact from stage 1 of the build
 step([$class: 'CopyArtifact', filter: 'build/test.js', fingerprintArtifacts: true, flatten: true, projectName: 'echo-develop-js-pipeline', selector: [$class: 'WorkspaceSelector'], target: './client/public/vendor/echo/'])
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我得到了一个 unable to find a build for artifact copy

创建工件后,它将保存在此处:

http://localhost:8181/view/Echo JS Develop/job/echo-develop-js-pipeline/233/artifact/build/test.js
Run Code Online (Sandbox Code Playgroud)

如何从管道作业中访问创建的工件?

groovy jenkins jenkins-pipeline

7
推荐指数
2
解决办法
3万
查看次数