问题描述:
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](https://ceshiren.com/uploads/default/original/3X/5/5/55cfc1e5f4c8788f8b85cff00c67dfd8ee05d7b4.png)
报错信息:
提示找不到这个shell文件,实际有
我也按照高飞老师的代码样例去写,还是报错shell文件找不到
xiaoxi
(测开17期学委-晓兮)
2
你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脚本去执行远程命令
问题已解决
在startUserServer.groovy
文件修改采用 SSH Pipeline Steps
的 sshScript
代码段
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