【问题标题】:jenkins shell build step with variable containing a single quotejenkins shell 构建步骤,变量包含单引号
【发布时间】:2018-11-01 03:42:21
【问题描述】:

我正在尝试使用 jenkins 来安排重复作业以从远程目录进行 rsync。不幸的是,我只有 ssh 密码访问权限(没有密钥),所以我使用 sshpass 进行身份验证。密码包含一个单引号,无论我做什么,jenkins 总是在单引号前面加上一个反斜杠。

详情:

  • jenkins 在 centos 上运行,通过 yum 安装
  • 构建步骤是一个外壳
  • shell 中的命令基本上是 `sshpass -p my'pass rsync -avc me@remotehost.com: /my/dest/dir/

我尝试过的变体:

  • 将密码放入文件中,然后使用 sshpass -f
    • 报告身份验证失败
  • 将上述命令放入脚本文件中,让 jenkins 构建运行该脚本
  • 使用 jenkins 凭据/关联变量
  • 双引号/字符串连接的所有变体

请注意,我尝试过的所有操作都可以在命令行和/或通过 crontab 正常工作(尽管我正在尝试使用 jenkins 而不是 crontab...)

有什么想法吗?

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    尝试对 shell 块使用 Groovy 多行字符串文字:

    stage{
      sh """
        sshpass -p my'pass rsync -avc me@remotehost.com: /my/dest/dir/
      """
    }
    

    【讨论】:

    • 谢谢!这导致我安装了 groovy,但是“sh”不起作用,在 stage { ... } 中包含 groovy 命令也不起作用。当我尝试用谷歌搜索“sh”时,我并没有走得太远,有什么建议可以让我在詹金斯中使用它吗?
    • 你能提供你的 Jenkinsfile 吗?
    • 谢谢,我无法在任何地方处理 Jenkinsfile。我确实在 JENKINS_HOME 中找到了,没有运气。我应该怎么做才能正确设置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2018-04-04
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多