jenkins控制库连接-问题集

jenkins控制库连接-问题集

  接上面两篇文章,记录下遇到的一些问题和解决方法

1、添加jenkins凭证

    经常用到这个函数去获取远程机器的登录账号和密码

def GetRemoteServer(ip){
    def remote = [:]
    remote.name = ip
    remote.host = ip
    remote.port = 自建数据库服务器的ssh端口
    remote.allowAnyHosts = true
    //通过withCredentials,调用Jenkins证书管理中已保存的凭据,credentialsId需要填写,其他保持默认即可
    withCredentials([usernamePassword(credentialsId: '事先配置在jenkins 的自建数据库服务器的账号密码凭据', passwordVariable: 'password', usernameVariable: 'userName')]) {
        remote.user = "${userName}"
        remote.password = "${password}"
    }
    return remote
}

  上面有个“事先配置在jenkins 的自建数据库服务器的账号密码凭据”,需要配置jenkins的证书管理,填完会返回一个ID,也就是 credentialsId

【系统管理】 ——》 【安全】 ——》 【Manage Credentials】——》全局凭据——》添加凭据

 

2、JAVA_HOME 找不到

  话说,这个是历史遗留问题了,一直没去解决,体现在jenkins新建“构建自由风格的软件项目”上,war包拷贝到远程机器上,开启tomcat报错。这种情况不是每次都会出现,但一出现我就会加 export JAVA_HOME

   这种方法有时能解决有时不行,比较头疼,试过在拷贝到的远程机器账号上,普通用户(.bashrc),全局配置文件(/etc/profile)加JAVA_HOME环境变量,也确认过jenkins机器上环境变量JAVA_HOME都是有配置的,但有时还是会抽风,今天顺带解决了,原来是jenkins ui 界面的全局属性里没有配环境变量,之前是空的。

 

解决效果图:

 3、pipeline 报错:Host key verification failed

  pipeline拷贝jar包到远程文件报错,其实我比较摒弃这种直接sshpss 接密码的方式传输,很不安全,下图这个也仅仅是验证猜想。

     这个报错有几种方法解决。

方法一:

  首先要搞清楚,这个复制的动作是运行jenkins的用户做的,网上说报错需要jenkins用户有”/bin/bash" 权限(/etc/passwd文件里),也就是下图红框部分改成”/bin/bash"

 

   然后vim ~/.bash_profile 加一串东西,最后加载。如果sshpass不想明文传输密码,就要在jenkins用户生成密钥对,把公钥放到远程机器上。

方法二(推荐

  流水线语法 --- 不用给jenkins用户登录权限,不用配密钥对

(这个方法是小俊子提示我的)

  

   点击进去,能根据在自用项目或者maven项目设置的步骤,转化为pipeline语法,当时给我转成sshPublisher这个方法,改了一下就能用了,所以前面文章会有这条:

sshPublisher(publishers: [sshPublisherDesc(configName: '自建数据库服务器在jenkins系统管理上的SSH Server Name', transfers: [sshTransfer(remoteDirectory: '$JAR_TMP_HOME', removePrefix: '项目目录/target', sourceFiles: '项目目录/target/构建出的jar包名-*.jar')])])                

  所以,不是俺自己手动写的,靠pipeline流水线语法转过来,然后改了关键字,哈哈哈~~~

posted @ 2022-04-01 22:15  windysai  阅读(221)  评论(0编辑  收藏  举报