Jenkins 持续集成与部署
在现代软件开发中,持续集成(CI)和持续部署(CD)已经成为提高开发效率、缩短交付周期的关键实践。而 Jenkins,作为 CI/CD 领域的开源工具,以其强大的灵活性和丰富的插件生态系统,成为许多团队的首选平台。本文是博主从零开始构建CI/CD流程的实践过程,如有不正确或待优化的步骤,欢迎各位大神前来探讨指教。
一、为什么选择 Jenkins?
在开始之前,先来聊聊为什么 Jenkins 会成为 CI/CD 的行业标准:
-
开源与免费:Jenkins 是完全开源的,这意味着你可以免费使用,并根据需求进行定制化开发。
-
插件生态系统:拥有超过 1500 个插件,几乎可以集成任何工具或服务,从代码仓库(Git、SVN)到测试框架(JUnit、TestNG),再到部署工具(Docker、Kubernetes)。
-
高度可扩展:支持通过 Pipeline 脚本实现复杂的构建逻辑,同时可以轻松扩展到分布式架构,满足大规模团队的需求。
-
社区支持:作为开源项目,Jenkins 拥有庞大的开发者社区,遇到问题时总能找到解决方案。
二、Jenkins 核心概念
在深入实践之前,先了解几个核心概念:
-
Job(任务):Jenkins 中的基本单元,用于定义构建、测试或部署的具体流程。
-
Pipeline:一种更高级的任务定义方式,通过代码(通常是 Jenkinsfile)描述整个 CI/CD 流程,支持复杂的分支逻辑和并行执行。
-
Agent(节点):Jenkins 的分布式架构中,用于执行任务的计算节点,可以是物理机、虚拟机或容器。
-
Stage(阶段):Pipeline 中的逻辑分组,通常用于区分构建、测试和部署等不同阶段。
三、Jenkins 安装与配置
1. 安装 Jenkins(windows)
中文文档:Jenkins
Jenkins 支持多种操作系统,以下是常见的安装方式:
进入 Jenkins 的 官方下载页面
LTS 是长期支持的版本,是稳定的版本
在 Windows 下 Jenkins 的安装有三种方式:
方式一:下载 war 包通过命令启动
方式二:war 结合tomcat进行安装
方式三:下载安装程序包 msi 文件
这里我用的是第三种方式安装:
在LTS下选择Windows即可下载一个jenkins.msi安装包
注意:我没有找 Java 8
支持的 jenkins.msi
,包括一些开源的镜像站,如果用这种方式下载 Jenkins
,建议先下载一个 JDK 11或者是JDK 17 。
下图是 jenkins 与 java 版本支持关系:
双击运行
点击 Next
选择安装路径,再点击 Next
选择 Run service as LocalSystem(not recommended),点击 Next
设置端口号(默认8080),测试端口号是否可以,可以之后点击 Next
选择 JDK 的安装路径(提前安装好的JDK),再点击 Next
之后点击 Next , 默认安装过去就行了。
2. 初始配置
首次访问 Jenkins(默认地址为 http://localhost:8080
),需要完成以下步骤:
-
解锁 Jenkins:输入安装过程中生成的管理员密码(提示路径找到管理员密码)。
-
安装插件:建议选择“推荐的插件”进行安装。
-
创建管理员用户:设置用户名和密码,用于后续登录。
-
实例配置:设置 Jenkins URL 和其他全局选项
3.常用设置
在 jenkins 的工作目录 .jenkins 中,找到 hudson.model.UpdateCenter.xml 文件打开
将 https://updates.jenkins.io/update-center.json 替换成国内镜像网址(需要管理员权限修改)
国内镜像网址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
国外镜像网址:https://mirror.xmission.com/jenkins/updates/update-center.json
再进入到 updates 目录下,编辑 default.json 文件,将该文件中国外的地址全部替换成国内的(需要管理员权限修改)
https://www.google.com 替换成 https://www.baidu.com
https://updates.jenkins.io/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins
我这里使用的是华为镜像源:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json
然后重启jenkins就可以使用了。