为什么会有 CI 平台?
很多公司因为种种原因,不想使用 Github/Gitlab
上的 CI
能力,或是希望定制一些更加强大的 CI/CD
工作流,就会使用专业的 CI
平台
有哪些 CI 平台?
阿里巴巴Anoe,网易Overmind,腾讯织云,开源的 Jenkins
Jenkins 介绍
Jenkins
是一款开源的 CI&CD
软件,用于自动化各种任务,包括构建、测试和部署服务
历史永久、功能强大、之后出现的各个 CI
平台的设计都受其影响
执行 CI - Git Webhook
触发
除了点击页面上的按钮触发 CI/CD
之外,更常见的还是利用 Git
远程仓库的 Webhook
触发
Github
和 Gitlab
,都提供了 Webhook
的功能
Github
的 Webhook
设置在项目的 Settings
这个 Tab
中:
利用 Webhook
可以通知 Jenkins
开始 CI/CD
任务。例如我们开启了 push
这个操作的 Webhook
之后,如果远程 git
仓库收到了一个 push
,那个 Github
就会向我们预先配置的 url
发出请求,并且带上一些信息作为参数,从而通知jenkins,在jenkins中就可以通过相关插件解析这个请求,触发相应项目的 CI/CD
过程。
Jenkins Pipeline
触发 CI/CD
之后如何执行具体的任务呢? 实际上Jenkins有一个Pipeline的概念,和Github Actions很像,都是编写一份配置来描述 CI/CD 逻辑。
Jenkins
提供了一种 DSL
(领域特定语言),用于开发者编写自定义的 CI/CD
流程
这个流程在 Jenkins
中叫做 Pipeline
(管道),很形象
一般, CI
平台都会提供类似的 DSL:Ant/Shell
等
远程部署
Pipeline
一般用来构建项目,构建的结果会保留在构建机里
我们可以利用 Jenkins
的 Publish Over SSH
插件,实现远程发布功能
这个功能,实际上就是将你的代码,通过 SSH
传输到服务器上
Name : 选择一个ssh服务器 Source files : 写入你要传输的文件路径 Remote directory : 服务器的接收路径 Exec command : 传输完了要执行的命令
结果通知
结合 Git Commiter
信息,我们可以通知对应开发者发布结果:
Extended E-mail Notification
插件:邮件通知dingTalk
插件:钉钉通知参考文章:
本文作者:叶继伟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!