You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Jenkins DSL实现工作区跨任务复制?

嘿,我之前也碰到过这个需求——Jenkins DSL确实没有原生的工作区复制API,但咱们可以通过插件或者脚本的方式搞定,给你几个实用方案:

方案1:用Copy Artifacts插件(最推荐)

这是Jenkins生态里最常用的跨任务复制产物的方式,首先得确保你的Jenkins已经安装了Copy Artifacts插件。之后在Job DSL里直接配置这个步骤就行:

job('目标任务名称') {
    steps {
        copyArtifacts('源任务名称') {
            includePatterns('**/*') // 复制源工作区所有文件,可按需改成特定路径,比如'dist/**'
            buildNumber('LAST_SUCCESSFUL') // 取最近一次成功构建的产物,也可以填具体构建号比如'123'
            targetDirectory('copied-workspace') // 复制到当前任务的这个目录下,不填就是根工作区
        }
    }
}

这个方法的好处是支持分布式Jenkins(跨节点复制),还能灵活筛选复制的文件、指定构建版本,稳定性也高。

方案2:Shell/PowerShell脚本直接复制(仅限同节点任务)

如果不能用插件,且源任务和目标任务在同一个Jenkins节点上运行,可以直接通过脚本访问Jenkins的工作区路径:

job('目标任务名称') {
    steps {
        // Linux/macOS环境用这个shell命令
        shell('cp -r $JENKINS_HOME/workspace/源任务名称/* ./copied-files')
        // Windows环境换成PowerShell脚本
        // powerShell('Copy-Item "$env:JENKINS_HOME\\workspace\\源任务名称\\*" -Destination ./copied-files -Recurse')
    }
}

注意:如果是分布式Jenkins,源任务和目标任务不在同一个节点的话,这个方法就失效了,因为节点之间不能直接访问对方的工作区目录。

方案3:结合Pipeline语法(适合Pipeline场景)

如果你的Jenkins支持Pipeline,也可以在Job DSL里定义Pipeline任务,用Pipeline的复制语法实现:

pipelineJob('目标任务名称') {
    definition {
        cps {
            script("""
                pipeline {
                    agent any
                    stages {
                        stage('复制源工作区') {
                            steps {
                                copyArtifacts(
                                    projectName: '源任务名称',
                                    filter: '**/*',
                                    selector: lastSuccessful()
                                )
                            }
                        }
                    }
                }
            """)
        }
    }
}

这个本质和方案1依赖的是同一个插件,只是用Pipeline的方式来封装,适合已经在使用Pipeline的团队。

额外注意事项

  • 确保目标任务有足够的权限访问源任务的构建产物
  • 如果源任务是参数化构建,需要在copyArtifacts里添加参数匹配,比如parameters { param('ENV', 'prod') }来指定对应参数的构建版本

内容的提问来源于stack exchange,提问作者paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:43:26