DevOps实战2-极简模型
source link: http://saiya.xyz/2021/01/16/devops2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
DevOps实战2-极简模型
以实践的方式摸索DevOps。同时也为了技术总结,加深印象。
初期目标是实现push代码后自动在服务器上完成构建与部署,并将代码push操作以及构建结果(成功或失败)的通知发送到钉钉群,实现部分持续集成和持续交付功能。
本此探索是一次初级尝试,尽量简化了架构和操作。在同一台开发服务器上安装docker、jenkins。
- Gitee:码云,用于存储代码。类似的还有Github、Gitlab、Bucket等。
- Git:管理代码
- Jenkins:由Jenkins实现构建等工作。
- Docker:容器化部署服务
- Spring boot:实现业务逻辑
- 钉钉:接收消息的工具软件
- 开发人员push代码到码云上。
- 码云收到push后通过webhook的方式向钉钉发送该push通知。
- 码云收到push操作后同样通过webhook方式向触发jenkins的构建任务。
- jenkins将构建结果也是用webhook的方式发给钉钉
- jenkins调用shell脚本将构建产物部署到jenkins所在的服务器上
程序员通过钉钉接收到上述的消息。
钉钉机器人
-
在钉钉上创建一个群,用以接收流程图中2、4步操作的通知消息。
-
群设置->智能群助手->添加机器人,选择添加“自定义通过webhook接入”这种机器。
-
为了通讯安全,机器人有三种验证方式分别是自定义关键词、加签、IP白名单。自定义关键词意思是发给机器人的消息中要有自定义的关键词,如果没有机器人是拒收的。例如设置了”报警“关键词,发给机器人的消息就必须有含有”报警“俩字。加签就是要求按照钉钉的说明文档,做签名计算,详见https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq。IP白名单,顾名思义,只有来自名单中的IP才接收消息。
-
为了简单起见选择IP白名单的方式。从上面流程图可以看出,钉钉要接收码云和jenkins的消息,所以这里设置上码云的ip:58.215.142.64和jenkins所在服务器的IP。
-
将webhook那一串复制出来保存后面配置需要用到
https://oapi.dingtalk.com/robot/send?access_token=c03b4deddc81fac7xxxxxxxa5451b331afc066xxxxxxxxxxxx
-
点击确定,完成机器人的创建。
码云配置钉钉机器人Webhook
- 在码云上为项目创建代码仓库。从上面的流程图可以看到码云向钉钉与Jenkins发送数据,产生联系。所以需要为钉钉和Jenkins二者分别配置。
- 进入项目的管理界面。点击“WebHooks”,点击添加按钮。
- 在URL那一项输入前面保存的钉钉机器人完整webhook。webhook密码/签名那一项不用填。点击保存,界面上有测试按钮,可以测试一下是否OK。
Jenkins为码云做的配置
码云触发jenkins的构建任务,和上面类似,为了通讯安全,码云和jenkins都需要配置。
- jenkins需要下载安装插件,DingTalk和Dingding-json-pusher,使Jenkins可以向钉钉发消息。
- Jenkins需要安装Gitee插件,使Jenkins可以通过webhook方式被码云触发构建。需要设置Gitee APIV5私人令牌什么的,还是挺啰嗦的,但不难。照着码云的文档做就好。下面有说明文档连接。
- 在系统管理->系统配置里面,会看见钉钉的相关设置。其中id会自动生成,不用填。名称自己随便起。webhook填写前面保存的钉钉机器人的webhook。点击保存就ok了。
- 在构建任务配置中会出现“钉钉配置”需要勾选你刚刚配置的机器人webhook。(我这里没勾选,饶了很多弯路)。
- 在构建任务配置中,构建触发器,勾选“Gitee webhook触发构建”,其他选项顾名思义,按实际情况勾选。需要注意的是有一个Gitee WebHook密码,系统自动生成,需要保存下来,配置到码云上。码云就是通过这个密码和Jenkins安全通讯。
详见https://gitee.com/help/articles/4193#article-header10
码云的使用说明,能更详细些。
需要注意的是
跨域请求问题:
由于Jenkins出于安全考虑,为了防止跨站请求伪造(CSRF),对于来自其他网站的网络请求会做过滤。Gitee的webhook是其他的网站请求,会被过滤掉。为了简化处理,关闭Jenkins的CSRF即可。
低版本的Jenkins在系统设置里面关掉CSRF功能即可
高版本的Jenkins需要在设置文件中修改,然后重启Jenkins使修改生效。详见《DevOps实战1-jenkins的安装使用》。
码云配置Jenkins触发构建webhook
- 和上面类似,进入码云的webhook界面,点击添加
- Url项填写的内容可以在Jenkins的项目构建任务配置中”Gitee 触发构建策略“看到,复制粘贴进去就行。别自己瞎写。
- WebHook 密码/签名密钥项选择密码,也是填写在Jenkins的项目构建任务配置中看到的,系统帮忙自动生成的复杂密码。
Jenkins
Jenkins收到码云的webhook触发时,启动构建任务。
jenkins构建结束后,调用shell脚本,通过shell脚本将服务部署到服务器上。
Jenkins发送构建结果通知
在项目构建设置中增加”构建后操作“,选择Dingding Json Pusher。填写access token即可。需要注意的是这里的access token是前面保存的钉钉机器人webhook中的“access_token=”后面的内容。举例:
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxx,此处需要填写的是xxxxxxxxxxx这部分。
Recommend
-
3
线程和IO模型的极简知识
-
10
中大型组织 DevOps 成熟度模型 Posted by: Phodal Huang Aug. 1, 2021, 6:21 p.m. DevOps 转型是一件颇有挑战性的工作。它并不是一个简单的工具或者平台的使用、运维能力提升。特别...
-
3
实战丨工商银行DevOps工具链建设之路 龚光庆 2022-02-17 10:05:33 新技术发展迅猛,金融产品和服务模式创新...
-
4
centos7安装Jenkins https://developer.aliyun.com/article/704929?spm=a2c6h.14164896.0.0.43a34345cQZQ1e $ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo $ sudo rpm --import http://pkg.jenkins-ci...
-
4
KubeSphere DevOps 系统功能实战-51CTO.COM KubeSphere DevOps 系统功能实战 作者:KubeSphere 2022-07-13 08:49:27 DevOps 可以帮助我们拉取代码、项目编译、构建镜像、推送镜像、...
-
7
个人亲自录制全套DevOps系列实战教程 : 手把手教你玩转DevOps全栈技术
-
1
DevOps实战系列【第三章】:详解Maven仓库及环境搭建 精选 原创
-
4
个人亲自录制全套DevOps系列实战教程 : 手把手教你玩转DevOps全栈技术
-
3
本文将通过展示 NodeJS 应用里环境变量的提取过程,来一窥 DevOps 技术是如何应用在现在云平台上的运维工作中的。同时我也想让大家在这里看到 DevOps 的另外一面,即它并非全能,从本地开发到持续部署再到实际运行,有一些运维鸿沟依然还未被填平。“人工操作”依然是...
-
3
67GoGolang DevOps运维开发实战集训营 xiaotu123 · 大约14小时之前 · 19...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK