700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Jenkins通过SSH进行文件传输

Jenkins通过SSH进行文件传输

时间:2021-10-05 14:56:59

相关推荐

Jenkins通过SSH进行文件传输

Jenkins 使用ssh 传输文件的插件很多,比如SSH plugin, SCP publisher,Publish Over SSH,pipeline脚本可以用 SSH Pipeline Steps,如果你不想用插件,也可以直接通过命令进行复制

Jenkins 使用Publish Over SSH插件传输文件如图所示,文件路径为相对路径

可以使用pipeline 脚本为

sshPublisher(publishers: [sshPublisherDesc(configName: '30.208', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/software/microservice-docker-jars', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])

使用 SSH Pipeline Steps 插件并结合withCredentials 如下:

def remote = [:]remote.name = "node-1"remote.host = "10.000.000.153"remote.allowAnyHosts = truenode {withCredentials([sshUserPrivateKey(credentialsId: 'sshUser', keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'userName')]) {remote.user = userNameremote.identityFile = identitystage("SSH Steps Rocks!") {writeFile file: 'abc.sh', text: 'ls' #写入脚本sshCommand remote: remote, command: 'for i in {1..5}; do echo -n \"Loop \$i \"; date ; sleep 1; done'sshPut remote: remote, from: 'abc.sh', into: '.'sshGet remote: remote, from: 'abc.sh', into: 'bac.sh', override: truesshScript remote: remote, script: 'abc.sh'sshRemove remote: remote, path: 'abc.sh'}}}

sshPut 正则匹配写法如下:

sshPut remote: remote, from: './target/', filterRegex: /\.jar$/, into: '/data/software/jars'

但是sshPut 在实际使用过程中,当我们利用正则匹配匹配target下的jar包,无法仅复制文件夹中的文件。总是将整个文件夹复制过去,该插件没有给出很好的解决方案(或许可以使用filterBy,filterRegex参数进行过滤,感兴趣的可以试试)。

比较好的解决方案如下:

findFiles(glob: 'Build/rpms/*.rpm').each {rpmFile -> sshPut remote: remote, from: rpmFile.path, into: '/data/mirror/rpm-repo'}

findFiles依赖插件:Pipeline Utility Steps,否则会报错:java.lang.NoSuchMethodError: No such DSL method ‘findFiles’ found among steps

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。