最近在用docker搭建jenkins,来完成项目部署,过程中碰到的问题记录如下:
回顾搭建步骤:
1、从git中拉去代码到jenkins中
2、将拉去的代码使用maven 构建
3、将maven生成的jar包推送到目标服务器
4、使用shell脚本在目标服务器上运行
1问题:
配置目标服务器的环境变量时
系统配置中Publish over SSH模块下
使用指令:ssh-keygen -t rsa 填入了key(私钥)后报如下错误解决
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@79690c0a]
解决:思路:检查密钥开头
私钥生成的版本过高,jenkins使用的是2.3.44
需要使用ssh-keygen -m PEM -t rsa -b 4096来生成密钥;
2问题:
配置目标服务器的环境变量时
系统配置中Publish over SSH模块下 填入了key后报如下错误解决
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [test]. Message [Auth fail]]
解决:
1、我是docker中部署的jenkins,需要在容器中生成对应的 密钥组,
将私钥放到对应key中
并且公钥需要追加到Hostname(目标服务器)的 /root/.ssh目录的authorized_keys文件后面,没有该文件就新增复制进去;
问题3:
将maven生成的jar包推送到目标服务器
构建后操作 使用Send build artifacts over SSH模式
构建成功了 但是jar包推送到目标服务器失败:SSH: Transferred 0 files
解决:从jenkin中拉取jar的路径不对导致; 执行ssh默认的根地址是/var/jenkins_home/workspace
拉取jenkins中jar的地址是:/var/jenkins_home/workspace + (Source files)的地址
我的就是:/var/jenkins_home/workspace/ruoyi-admin/target/ruoyi-admin.jar
拉取的地址不存在或者没有文件 日志就会记录推送 0 files
问题4:
拉取git时报错:
hudson.plugins.git.GitException: Could not init /var/jenkins_home/workspace/test Caused by: java.io.IOException: error=13, Permission deniedy
原因:
全局git路径配置的问题:
Path to Git executable这个地址 由于配置的git地址各不相同可以进入容器中查看自己的路径
#进入容器
docker exec -it 容器id /bin/bash
#查看git配置
whereis git
问题5:
拉取git时报错:
hudson.plugins.git.GitException: Failed to fetch from git@gitee.com:pengcc00/ruoyi.git returned status code 128:
原因:
128没有git访问权限,密钥配置的不对,因为时docker中部署,需要在容器中生成密钥来配置,一开始在服务器中生成的导致不生效