Jenkins 在 Pipeline 中上传文件到 FTP
🏷️ Jenkins
根据 Stack overflow 上的回答,Publish Over FTP 插件自 1.15 版本开始支持 Pipeline 。
1. 安装 Publish Over FTP 插件
首先要在 Manage Jenkins → Manage Plugins 中安装 Publish Over FTP 插件。
2. 配置 FTP Server
之后需要在 Manage Jenkins → Configure System 页面的 Publish Over FTP 区域添加 FTP Server,其中的 Name 在后面的 Pipeline 脚本中会用到。
3. Pipeline 脚本
最后在脚本中通过 ftpPublisher 方法执行上传操作。
关于脚本的写法可以在 流水线语法 页面选择 ftpPublisher: Send build artifacts over FTP 示例自动生成脚本。
需要注意的有以下几点:
- masterNodeName 和 paramPublish 参数是必须的,自动生成的脚本中不知道为什么不含这两个参数;
- publishers → configName 值为第二步中设置的 FTP Server Name;
- remoteDirectory 指定上传的远端目录
- sourceFiles 指定需要上传的文件
- removePrefix 设置为需要过滤掉的文件前缀
- 下面的示例中会自动将 OctopusSoa/OctopusApi/target/ 目录下的所有文件上传到 FTP 服务器的 server 目录下。
- 如果 removePrefix 为空,则会上传到 server/OctopusSoa/OctopusApi/target/ 目录下。
groovy
stage('Upload') {
steps {
ftpPublisher alwaysPublishFromMaster: false,
continueOnError: false,
failOnError: false,
masterNodeName: '',
paramPublish: null,
publishers: [[
configName: 'SOA-D',
transfers: [[
asciiMode: false,
cleanRemote: false,
excludes: '',
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: '[, ]+',
remoteDirectory: 'server',
remoteDirectorySDF: false,
removePrefix: 'OctopusSoa/OctopusApi/target',
sourceFiles: 'OctopusSoa/OctopusApi/target/*.jar'
]],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: false
]]
}
}