| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Gitlab-ci 替代 webhook 触发Jenkins job -> 正文阅读 |
|
[系统运维]Gitlab-ci 替代 webhook 触发Jenkins job |
导读:网易云信的 gitlab 服务器搭建在外网,Jenkins 服务器搭建在内网,因此 gitlab 没办法直接把 webhook 发送给Jenkins,而?pipeline 的搭建采用第三方 relay 转发的方式,但是这个 relay 经常“罢工”。本文根据网易云信的落地实践,详细介绍了如何借助 Gitlab-ci 替代 webhook 触发 Jenkins job。 文|邹李勇 网易云信资深 C++ 开发/DevOps 工程师 背景Gitlab 如何触发 Jenkins job??我们 push 代码或提交 merge request 的时候,gitlab 会发送一个webhook(单纯地理解成一个 http 请求或 restful api 即可)给 Jenkins,请求执行某个 job。 困境?网易云信使用的 gitlab 服务由杭研维护,服务器搭建在外网。而我们的? Jenkins 服务器搭建在内网,这意味着 gitlab 没办法直接把 webhook 发送给Jenkins,而我们的 pipeline 在搭建之初采用了第三方 relay 转发的方式,把 gitlab 的 webhook 转发给 Jenkins。虽然把 webhook 从 gitlab 发送到 Jenkins 的目的达到了,但是这个免费的第三方 relay 可能经常“罢工”。 借助 Gitlab-ci 替代 webhook 触发 Jenkins job?gitlab-ci?简单来讲,gitlab-ci 是 gitlab 自带的特性,通过源码根目录下的 .gitlab-ci.yml 文件配置。在代码? push 或 merge request 的时候自动运行。 以下是官方的解释: GitLab Auto DevOps is a collection of pre-configured features and integrations that work together to support your software delivery process. GitLab CI/CD can automatically build, test, deploy, and monitor your applications by using Auto DevOps. To use GitLab CI/CD, you need:
官方的 you need 中其实还少了一点 —— GitLab runner,运行 GitLab-ci job 的地方,也就是说 .gitlab-ci.yml 中定义的所有工作都会分发到这里。 在我们这个实践中,我们会在 GitLab runner 中搭建一套 python 环境和 python-jenkins 模块,然后通过 python 脚本触发 Jenkins job,最后把这个触发 Jenkins job 的 python 脚本部署到 gitlab-ci 中。 因此整个实践分成3个部分。
?搭建 gitlab runner?安装 gitlab runner 客户端官方:GitLab Runner can be installed and used on GNU/Linux, macOS, FreeBSD, and Windows. 因此选择任意一台长期在线的打包机即可。笔者推荐优先选择 GNU/Linux,通常 linux 上搭建常驻服务要比其他系统更方便,MacOS 次之,最后是 Windows。 以下是 GNU/Linux 平台的安装方法的搬运:
- Find the latest file name and options athttps://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html. - Choose a version and download a binary, as described in the documentation for downloading any other tagged releases for bleeding edge GitLab Runner releases. For example, for Debian or Ubuntu:
For example, for CentOS or Red Hat Enterprise Linux: ???????
For example, for CentOS or Red Hat Enterprise Linux:
其他平台的安装方案请点击官方教程传送门: https://docs.gitlab.com/runner/install/ 通常作为一个 trigger 代理,任务开销很小,我们可以把 /etc/gitlab-runner/config.toml 配置里的 concurrent 可以改得大一些,以支持更高的并发量。 注册 gitlab runner
2.?Enter your GitLab instance URL. 上图红框中 Register the runner with this URL 下面的内容。 3.?Enter the token you obtained to register the runner. 上图红框中 And this registration token 下面内容。 4. Enter a description for the runner. You can change this value later in the GitLab user interface. 在 gitlab 中显示的 runner 描述,该实践中我们把他当名字用,叫 scapegoat-01。 5. Enter the tags associated with the runner, separated by commas. You can change this value later in the GitLab user interface. tag 相当于Jenkins中的 label, 用于 runner 分类。该实践中输入 scapegoat。 6. Provide the runner executor. For most use cases, enter docker. 这里我们选 shell, window 可选 powershell。 其他平台命令相同,官方传送门: https://docs.gitlab.com/runner/register/index.html。 注册成功后可在红框下面 Available specific runners 里看到我们刚刚注册的 runner,类似下图。其中:
通过 python-jenkins 触发 Jenkins job?环境安装
如下红框中的内容就是新生成的 token,在下面 python 脚本中要用。 编写 python 脚本
运行如上脚本即可触发对应的 Jenkins job, python Jenkins-Compile-trigger.py 使用 gitlab-ci 在 push 代码和 merge request 时调用 python 脚本编写 .gitlab-ci.yml 文件。
把如上 .gitlab-ci.yml 和触发用 Jenkins job 的 python 一起放在源码根目录下,同代码一起上传仓库。通过 gitlab-ci 触发 Jenkins job 的功能就实现了。 作者介绍?邹李勇,网易云信资深 C++ 开发/DevOps 工程师。Linux 平台 RTC SDK 开发,负责 DevOps 系统开发和运维。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 1:35:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |