V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
huangsijun17
V2EX  ›  程序员

Jenkins 的 SSH Pipeline Steps 插件的 sshPut 功能在传输单个文件时如何不复制本地目录结构?

  •  
  •   huangsijun17 · 4 天前 · 779 次点击

    将本地 "test-dir" 目录下的 "demo.txt" 文件推送到远程 "/tmp/ssh-test/" 目录下。"test-dir" 目录会自动创建。无法将 "demo.txt" 直接放入 "/tmp/ssh-test/" 目录中。 即使我将工作目录切换到 "test-dir",仍然无法实现。

    示例脚本

    pipeline {
     agent any
     stages {
      stage ('Test') {
       steps {
        sh 'mkdir -p test-dir && echo "test" > test-dir/demo.txt' // 创建本地目录结构
        dir ('test-dir') {
         sshPut remote: [host: 'remote-ip', user: 'user', password: 'pass'],
           from: '.', into: '/tmp/ssh-test' // 传输当前目录
        }
        sshCommand remote: [host: 'remote-ip', user: 'user', password: 'pass'],
           command: 'ls -l /tmp/ssh-test' // 验证远程路径
       }
      }
     }
    }
    

    如何修改来讲文件应直接复制到指定的路径: /tmp/ssh-test/demo.txt

    6 条回复    2025-04-03 10:52:19 +08:00
    ZeekChatCom
        1
    ZeekChatCom  
       4 天前
    from 由 . 改为 demo.txt
    defunct9
        2
    defunct9  
       3 天前
    弄一大堆插件,不如一套 shell 来的痛快
    huangsijun17
        3
    huangsijun17  
    OP
       3 天前
    @defunct9 #2 被迫使用密码,我难不成全部用回 sshpass ?
    huangsijun17
        4
    huangsijun17  
    OP
       3 天前
    @ZeekChatCom #1
    1. 依然带路径。
    2. 实际场景下,该路径下不止一个文件,我用了“filterRegex”的正则表达式,所以 from 要路径。
    ZeekChatCom
        5
    ZeekChatCom  
       3 天前
    @huangsijun17

    试试 remote 中添加 fileTransfer: 'scp', 有人这样说,我没试过。

    实在不行,再 sshCommand 中 mv 移动一下
    defunct9
        6
    defunct9  
       3 天前
    用 sshpass 有啥不好,看着这屎一样的 pipleline, groovy ,就很恶心。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1213 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:48 · PVG 07:48 · LAX 16:48 · JFK 19:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.