JenkinsCli自动化
问题
每次重装后 Jenkins内的任务都得手动创建
思路
发现Jenkins有 命令行工具, 可以实现自动化

怎么做
根据自己搭建的Jenkins网站中的 Jenkins 命令行 说明

准备
java环境
猜测
jenkins的镜像中有
验证
1 | docker exec jenkins_jenkins_1 java --version |

结果
有Java环境
jar包
可以直接点击下载, 再重新上传回服务器
猜测
分析下载链接, 发现是从自己服务器下载的, jar包肯定在自身镜像内

查找
找出符合文件大小的jar包

1 | docker exec jenkins_jenkins_1 find / -name *.jar -size +3M -size -5M |

很明显 是 /var/jenkins_home/war/WEB-INF/lib/cli-2.340.jar
验证


结果
是同一个包
测试
直接连接
测试
1 | docker exec jenkins_jenkins_1 java -jar /var/jenkins_home/war/WEB-INF/lib/cli-2.340.jar -s https://jenkins.chenyiliang.top/ -webSocket help |

结果
1 | io.jenkins.cli.shaded.jakarta.websocket.DeploymentException: Handshake error. |
失败
分析
需要身份认证
身份认证
查找
查看文档 Jenkins HTTP 连接

使用 -auth 参数
测试
1 | docker exec jenkins_jenkins_1 java -jar /var/jenkins_home/war/WEB-INF/lib/cli-2.340.jar -s https://jenkins.chenyiliang.top/ -auth username:passwd help |

结果
没有任何反应
分析
nginx反向代理问题

Nginx反向代理
查找
查找文档 反向代理-Ngxin
需要在 nginx的配置=> server => location 中添加一些配置

1 | # ws |
测试
1 | docker exec jenkins_jenkins_1 java -jar /var/jenkins_home/war/WEB-INF/lib/cli-2.340.jar -s https://jenkins.chenyiliang.top/ -auth username:passwd help |

结果
成功
使用
调用方式
1 | # 找到Jenkins容器id |
bash 调用命令
使用容器中的 bash 调用命令而不直接使用 java 的原因是因为有一些命令需要的一些参数 需要在容器内执行, 而直接使用java调用会在当前直接执行
常用命令
下方命令替换 COMMAND
1 | # 验证身份 查看自己是否有权限执行 |
who-am-i
验证用户是否已经注册
验证是否登录成功
验证主机连接没有问题
groovy
执行 xxx.groovy 脚本的效果等同于在 脚本命令行] (chenyiliang.top) 内执行

注意
脚本路径需要在容器内是有效的
需要自己预导入需要的库

1 | import jenkins.* |
举例
根据之前生成过的 WebHook 密码, 生成任务配置文件中的 secretToken, 使用此配置文件, 避免在托管后台修改 WebHook 密码
1 | import hudson.* |
create-job
注意
脚本路径需要在容器内是有效的
配置文件可以是根据以前自己手动配置过的任务配置 修改生成的