Jenkins共享库的shell脚本如何在job pipline脚本的远程执行命令中调用?

问题描述:
1.在jenkins-shared-libraries里自建目录resources,在其目录下建shell脚本: test_deploy_lesdo_user_server.sh

2.在jenkins-shared-libraries里目录var下,建全局变量 startUserServer.groovy
如上图所示,其中该脚本代码如下,这里的shell脚本路径我尝试写绝对路径也无法使用

def call(){
    sh """
            ssh -o StrictHostKeyChecking=no -l root 1.1.1.2 bash -s <   lesdo-jenkins-groovy/tools/test_deploy_lesdo_user_server.sh
        """
}

3.在job pipline脚本调用此jenkins-shared-libraries的shell脚本去执行远程命令
image

报错信息:
提示找不到这个shell文件,实际有

我也按照高飞老师的代码样例去写,还是报错shell文件找不到

你Jenkins是安装在docker里不,存放文件的目录环境和Jenkins所在的环境一致不

Jenkins是war包命令启动的,Jenkins共享库代码和业务项目的代码都放在gitlab上的。
业务项目下有jenkinsfile来调用Jenkins共享库的全局变量,在Jenkins构建业务项目job时,调用全局变量报错


你去到这个目录瞅瞅

这个目录就是Jenkins构建Jenkins共享库git项目时的shell脚本路径,没问题的。

突然想起个事情,Jenkins服务器与业务项目实际部署启动的服务器不是同一个。
Jenkins服务器存放业务项目和Jenkins共享库的代码,执行业务项目的pipline脚本时,从顶层看是调用Jenkins共享库的全局变量,这个全局变量是封装了远程登陆业务服务器并执行shell脚本,这里的shell路径是Jenkins服务器上的。
请问这里的脚本应该是业务服务器上的还是Jenkins服务器上的。

期望达到的效果是,读取Jenkins服务器的Jenkins共享库shell脚本去执行远程命令

额。。我没辙了,换人上 :joy:

问题已解决

startUserServer.groovy 文件修改采用 SSH Pipeline StepssshScript 代码段

def call(){
    def remote = [:]
    remote.name = '1.1.1.1'      # 远程服务器的名称,自定义
    remote.host = '2.2.2.2'      # 远程服务器的IP及端口,端口号默认22
    remote.user = 'wang'         # 登录远程服务器的用户名
    remote.password = '1234'     # 登录远程服务器的密码
    remote.allowAnyHosts = true  # 默认的,抄就行了
    stage('Remote SSH') {
         # 只需修改本地服务器的脚本地址,建议写绝对路径
        sshScript remote: remote, script: "test_deploy_lesdo_user_server.sh"
    }
}

参考 pipeline ssh-steps

关闭