Gitlab与Jenkins集成的一种方式

环境准备

本文主要简要记录gitlab与jenkins的持续集成过程,并通过SSH完成kubernetes应用的自动部署。
jenkins所需基本的插件包括:Gitlab Hook Plugin,Gitlab Plugin,Docker Plugin,Publish over SSH等。
假设已经安装好了gitlab以及jenkins,构建所需的Docker环境,以及Kubernetes等。

自动构建部署流程

一张图说明当前自动构建的流程:
《Gitlab与Jenkins集成的一种方式》

主要操作步骤

  1. jenkins添加访问gitlab的凭据:

凭据->系统->全局凭据 (unrestricted)->添加凭据->选择,
填入gitlab用户名密码后,确定添加会生成一个新的凭据。

  1. jenkins添加Publish over SSH,用于远程k8s部署

配置->Publish over SSH, 填入密码或rsa private key,以及要执行远程command的host,用户名等

  1. jenkins添加Docker云,用于打包docker镜像

系统管理->系统配置->新增一个云->Docker,
按照实际情况填写docker相关参数

  1. jenkins添加gitlab源

Git Repositories选择要拉取的源地址,如https://xx.com/xxx.git,
触发条件选择 Build when a change is pushed to GitLab,
然后记录下GitLab webhook URL Secret Token这两个参数,用作gitlab访问jenkins时的凭据

  1. gitlab配置webhook

工程主页->设置->集成,
分别将上个步骤获得的两个参数填入 链接(URL), 安全令牌 这两项中。
点击 增加WebHook

  1. jenkins配置构建环境及添加构建步骤

不同的语言需要不同的插件支持,可以先在插件管理中安装对应插件后再在构建环境中勾选选项;
构建步骤可以添加shell脚本,或者其他一些操作;
构建步骤最后勾选 Build/Publish Docker Image,选择刚才添加好的Docker云,设置好镜像tag及勾选Push Iamge等参数。

  1. 远程执行kubectl,更新service等

增加构建后步骤->Send build artifacts over SSH,
配置相关shell command执行更新操作,如kubectl apply -f xxx.yml

  1. 向gitlab报告pipeline状态

增加构建后步骤->Publish build status to Gitlab

至此, 当git push到指定分支时,便能在gitlab的CI/CD->流水线页面下查询当前的集成构建状态。

····································
欢迎关注课程:
仿百度云盘Go实战 从0到1实现企业级分布式“云存储”系统(服务端)

点赞