DevOps-Jenkins触发器、项目关联及Jenkins视图应用示例
构建触发器(钩子)
构建触发器(webhook),有的人称为钩子,实际上是一个 HTTP 回调,其用于在开发人员向 gitlab 提交代码后能够触发 jenkins 自动执行代码构建操作。
以下为新建一个开发分支,只有在开发人员向开发(develop)分支提交代码的时候才会触发代码构建,而向主分支提交的代码不会自动构建,需要运维人员手动部署代码到生产环境。
此功能为gitlab使用API方式访问jenkins,所以
jenkins 安装插件
Gitlab Hook 和 Gitlab Authentication
在 jenkins 系统管理--全局安全设置,认证改为登录用户可以做任何事情
取消跨站请求伪造保护的勾选项
Gitlab Hook Plugin 以纯文本形式存储和显示 GitLab API 令牌
官网文档:https://jenkins.io/security/advisory/2018-05-09/#SECURITY-263
jenkins 修改登录认证方式
系统管理—全局安全设置,以下关闭跨站请求伪造保护只适用于2.204.6以下版本,我的jenkins版本是Jenkins 2.319.1,需要修改配置文件
高版本jenkins请参考:
修改jenkins配置文件关闭跨站请求伪造保护
在配置文件加上以下配置并重启服务,不然会报错403 cat /etc/sysconfig/jenkis JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true" systemctl restart jenkins
jenkins 新建 develop job
jenkins 构建 shell 命令
构建命令为简单的测试命令,比如输出当前的账户信息
使用以下命令生成随机Token
[root@jenkins ~]# openssl rand -hex 12 e2223148df53961ac91b2f5d
使用以下 URL 远程触发构建: JENKINS_URL /job/linux38-web1-develop/build?token= TOKEN_NAME 或者 /buildWithParameters?token= TOKEN_NAME
可选附加&cause=Cause+Text以提供将包含在记录的构建原因中的文本.
拼接起来gitlab访问jenkins,将以下url填入gitlab系统钩子
http://159.xx.xx.6:8080/job/linux38-web1-develop/build?token=e2223148df53961ac91b2f5d
gitlab 配置 webhook
选择 ”更新存储库时将触发此 URL“,触发gitlab远程调用jenkinsAPI实现自动部署,点击保存
点击测试按钮测试钩子是否可以正常构建
使用 curl 命令访问 URL
curl http://192.168.7.102:8080/job/linux36-job1-develop/build?token=aa9ef9c4d39268b6d0756a1c
jenkins 验证 job 是否自动构建
jenkins项目关联
用于多个 job 相互关联,需要串行执行多个 job 的场景,可以通过安装插件 Parameterized Trigger 触发执行其他 project。
将以下job任务拆分,可以实现job复用和模块化
cd /var/lib/jenkins/workspace/linux38-web1-develop tar -zcvf myapp.tar.gz ./* scp myapp.tar.gz www@web2:/data/tomcat/tomcat_appdir ssh www@web2 "bash /opt/apps/tomcat.sh stop" ssh www@web2 "cd /data/tomcat/tomcat_appdir ; rm -rf /data/tomcat/tomcat_webapps/myapp/* ; tar -xvf /data/tomcat/tomcat_appdir/myapp.tar.gz -C /data/tomcat/tomcat_webapps/myapp" ssh www@web2 "bash /opt/apps/tomcat.sh start"
代码拷贝job
cd /var/lib/jenkins/workspace/linux38-web1-develop tar -zcvf myapp.tar.gz ./* scp myapp.tar.gz www@web2:/data/tomcat/tomcat_appdir
停止服务job
ssh www@web2 "bash /opt/apps/tomcat.sh stop"
代码部署job
ssh www@web2 "cd /data/tomcat/tomcat_appdir ; rm -rf /data/tomcat/tomcat_webapps/myapp/* ; tar -xvf /data/tomcat/tomcat_appdir/myapp.tar.gz -C /data/tomcat/tomcat_webapps/myapp"
服务启动job
ssh www@web2 "bash /opt/apps/tomcat.sh start"
配置构建后操作,选择构建其他工程
jenkins视图管理
列表视图
列表视图使用场景比较多,用于将一个业务的job保存至一个列表视图进行分类管理,即不同业务的 job 放在不同的列表视图中。
定义视图名称
选择任务,也可以选择正则表达式匹配
结果展示
创建pipeline视图
安装插件:build pipeline
创建 pipline 视图
定义 视图 配置 信息
结果展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现