Jenkins 提供了软件开发的持续集成服务。它运行在 Servlet 容器中(例如 Apache Tomcat)。它支持软件配置管理(SCM)工具(包括 AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase 和 RTC),可以执行基于 Apache Ant 和 Apache Maven 的项目,以及任意的 Shell 脚本和 Windows 批处理命令。
官网: https://www.jenkins.io
部署
建议使用 docker 容器化部署,此处给出常用 docker-compose 配置文件
1 | version: '3.9' |
当然也可以在容器页面上直接添加容器
访问 :8080 即可打开 Jenkins
此处可以看到初始化密码路径, 就在 jenkins_home/secrets 目录下面
登录之后创建管理员账号
插件安装
界面打开: 系统管理-> 插件管理 (/manage/pluginManager/)
- Workspace Cleanup Plugin # 构建完成后清理
- Timestamper # 日志事件显示
- Build Timeout # 构建时间统计
- SSH server # 远程执行
- Pipeline # 流水线
- Localization: Chinese (Simplified) # 汉化(可选)
- Kubernetes CLI Plugin # k8s 命令调用插件(可选)
- GitLab Plugin # gitlab 插件
- Git Parameter Plug-In # 参数构建
- Active Choices # 参数选择
流水线基础配置
前置配置
- 添加 gitlab 秘钥
- “系统管理” -> “系统设置“ -> “Gitlab” 填写 gitlab 信息
- 添加 k8s 秘钥
- 添加 docker 秘钥
新建任务
- 新建任务
- 输入任务名称
- 选择流水线类型任务
- GitLab Connection 选择 gitlab Credential
- 勾选不允许并发构建
- 选择构建触发器, 获取 webhook 地址 以及 Secret token
- 填入必要的构建选项, 一般只需要 push event 即可, 也可以定时构建
- 填入 pipeline 代码
pipeline 编写
构建需求
- 通过 git tag 标记版本号
- 推送 tag 触发构建
- 构建过程中生成版本镜像,helm 并推送至对应仓库
- 发布 helm 到 k8s 环境中
示例代码
1 | // helm 发布 |
脚本说明
- 脚本分六个阶段构建
- 初始化,拉取代码,构建镜像,构建 helm,发布到 k8s,清理
- 构建完成通知