每次手动打包到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手来干活?
别被这些术语吓到,其实超简单!想象一下你做饭(代码开发):
买菜 (Coding):吭哧吭哧写代码。洗切配 (Building):得把代码“处理”成能跑的程序(编译、打包)。尝味道 (Testing):自己先尝尝咸淡(单元测试、简单功能测试)。上桌 (Deployment):端给客人(部署到测试/生产环境)。传统手工模式:你一个人吭哧吭哧干完1234步。累了不说,步骤4万一失手(比如烫到手),整盘菜撒一地… 完犊子!客人饿肚子,你也崩溃。
CI/CD 自动化流水线模式:这是你开了个“自动化厨房”!
CI (持续集成):只要你买好菜放进口袋(代码提交到仓库,如GitHub)! 自动洗切配(自动构建)自动尝咸淡(自动运行测试)核心目标:快速发现“菜”本身的问题!!!酸了?糊了?咸了?马上告诉你! CD (持续交付/持续部署):CI验证合格的“预制菜”,可以: 自动打包好,随时能上桌(持续交付 - 准备好部署包)。或者,直接自动端上指定餐桌(持续部署 - 自动部署到测试/生产环境)。核心目标:让“好菜”能又快又好地送到“客人”面前!Jenkins就是那个帮你搭建和管理这个“自动化厨房”的超级管家!你只管提交代码(买菜),它帮你搞定后面所有流水线操作,还能随时报告“菜”的质量!稳不稳?
Jenkins的安装非常简便,这里以最常见的War包方式为例:
下载Jenkins:访问Jenkins官网,下载最新的War文件运行Jenkins:在命令行中切换到War文件所在目录,执行以下命令:
java -jar jenkins.war
如果需要修改端口,可以使用:
java -jar jenkins.war --httpPort=8081
通过Tomcat运行:你也可以将Jenkins War文件放入Tomcat的webapps目录中,通过Tomcat来启动
对于Docker党,安装更简单,只需一条命令:
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
首次访问Jenkins(通常是http://localhost:8080),会进入初始化设置向导:
解锁Jenkins:从Jenkins控制台日志中获取初始管理员密码,在解锁页面输入安装插件:建议选择**“安装推荐插件”**,这会安装最常用的插件集合创建管理员用户:设置你的管理员账号和密码,以后就用这个账号登录为确保项目的完整功能,请检查以下关键插件是否已安装:
Git插件:用于从Git仓库拉取代码Credentials插件:安全管理各种凭证Email Extension插件:邮件通知功能Workspace Cleanup插件:清理工作空间如果缺少某些插件,可以在**“系统管理” → “插件管理”**中搜索安装。
让我们开始创建第一个自由风格项目:
在Jenkins主页面,点击左侧菜单的**“新建任务”**输入任务名称,例如**“My-First-Freestyle-Project”**选择**“构建一个自由风格的软件项目”**点击**“确定”**进入配置页面命名技巧:任务名称应有明确含义,便于后续识别和管理。注意创建后不要轻易更改名称,因为很多内部文件都是以任务名称命名的。
在通用配置部分,我们需要设置一些项目的基本信息:
项目描述:简要描述项目的用途,例如“这是一个示例前端项目,用于演示Jenkins构建流程”丢弃旧的构建:这是重要的维护设置,可以防止构建历史占用过多磁盘空间。建议设置: 保持构建的天数:7天保持构建的最大个数:10-20个 参数化构建:如果需要根据不同参数执行不同构建流程,可以在这里定义参数。例如,定义部署环境参数(开发/测试/生产)。这是自动化构建的关键——告诉Jenkins从哪里获取代码:
选择Git(如果你使用其他版本控制系统,如SVN,请选择对应选项)在Repository URL中输入你的代码仓库地址配置认证信息: 如果使用SSH认证,需要添加SSH私钥如果使用HTTP认证,需要添加用户名和密码构建触发器决定何时启动自动构建,常见的触发器有:
定时构建:像cronjob一样按计划执行,例如每15分钟一次:
H/15 * * * *轮询SCM:定期检查代码仓库是否有变更,有变更则构建GitLab webhook:当代码推送到GitLab时,自动触发构建其他项目触发:当其他项目构建完成后触发当前项目
这是构建过程的核心部分,可以添加多个构建步骤。对于自由风格项目,最常见的构建步骤是执行Shell脚本或Windows批处理命令。
示例Shell脚本:
echo "开始构建..."
# 显示构建信息
echo "当前工作目录:$(pwd)"
echo "构建编号:$BUILD_NUMBER"
# 安装依赖
npm install
# 运行测试
npm test
# 构建项目
npm run build
echo "构建完成!"
注意:Jenkins执行Shell脚本时,默认工作目录是Jenkins主目录/workspaces/以job名称命名的文件夹。
构建完成后,我们通常需要做一些后续工作:
归档制品:将构建产物(如JAR、WAR文件)保存起来发布JUnit测试结果报告:如果项目有单元测试,可以生成测试报告邮件通知:将构建结果通知相关人员触发其他项目:构建成功后自动触发下游任务自由风格任务上手快,但配置复杂流水线时,界面操作就有点力不从心且不易维护了。Jenkins Pipeline(流水线) 是更强大、更灵活、也更推荐的方式!核心思想:用代码(Groovy DSL)定义你的整个构建、测试、部署流程!
创建一个名为Jenkinsfile的文件,放在项目根目录,内容如下:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('Deliver') {
steps {
sh './jenkins/scripts/deliver.sh'
}
}
}
}
这个Pipeline定义了三个阶段:构建、测试和交付,清晰明了。
假设我们有一个简单的Java Maven项目,代码存放在GitLab上。现在需要配置Jenkins实现以下目标:
当代码推送到GitLab时自动构建执行构建过程(编译、运行测试)将构建产物归档构建结果通过邮件通知团队在项目根目录创建Jenkinsfile,内容如下:
pipeline {
agent any
options {
skipStagesAfterUnstable()
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('Deliver') {
steps {
sh './jenkins/scripts/deliver.sh'
}
}
}
}
在Ubuntu上配置Jenkins的构建触发器,有几种常见方式,下表汇总了常用的4种内置触发器、配置位置与示例:
| 触发器 | 配置位置 | 关键配置 | 典型示例与说明 |
| 触发远程构建 | 项目配置 → 构建触发器 → 勾选“触发远程构建”,设置身份验证令牌 | 生成 URL:JENKINS_URL/job/ | 示例: |
| 其他工程构建后触发 | 项目配置 → 构建触发器 → 勾选“Build after other projects are built” | 选择前置工程;可勾选“只有构建稳定时触发” | 用于串联流水线/多模块,前置成功后自动触发本工程 |
| 定时构建 Build periodically | 项目配置 → 构建触发器 → “日程表” | 使用 Cron 语法(分 时 日 月 周),建议用 H 平滑负载 | 示例: |
| 轮询 SCM Poll SCM | 项目配置 → 构建触发器 → “日程表” | 定时扫描远端仓库变更,变更则触发 | 示例: |
说明与要点:
Cron 字段顺序为:分 时 日 月 周;H 表示“哈希分散”,避免同一时刻集中触发。轮询 SCM 与“定时构建”不同:前者以“代码是否有变更”为条件,后者以“时间”为条件;轮询会带来额外负载,通常优先使用 Webhook 替代。提示:Webhook是“事件驱动”,相较“轮询 SCM”延迟更低、资源占用更少,推荐优先采用。
Jenkins提供了丰富的环境变量,可以在构建过程中使用。以下是一些常用的环境变量:
BUILD_NUMBER:当前的构建号
JOB_NAME:当前作业的名称
WORKSPACE:当前作业的工作空间路径
参数化构建可以让你的构建过程更加灵活。你可以定义字符串参数、选择参数、布尔值参数等,然后在构建过程中使用这些参数。
在Jenkins中,Credentials Plugin提供了安全管理敏感信息的能力,比如密码、API密钥、SSH私钥等。你可以通过以下步骤添加凭证:
进入 Manage Jenkins → Manage Credentials点击 Global credentials (unrestricted)点击 Add Credentials 添加新的凭证在项目配置中,你可以通过
$VAR_NAME的方式引用这些凭证,确保敏感信息不会明文出现在配置中。
当单个Jenkins实例无法满足构建需求时,你可以设置主从架构,将构建任务分发到多个代理节点上执行。这可以:
提高构建效率,并行执行多个任务隔离不同环境(如Windows、Linux、macOS)分担主节点负载,提高系统稳定性教科书上把会不会制造工具当做人和动物的根本区别,我觉得这也是判断一个好程序员的标准之一。优秀的程序员总是会去寻找好的工具,或者自己去创造一些工具来提高自己的生产效率,他们通过工具把那些浪费在重复劳动上的时间花在了更有意义的事情上去。
Jenkins就是这样一款能够极大提升生产效率的神器。通过本文的介绍,你应该已经掌握了:
Jenkins的基本概念和CI/CD核心思想如何安装和配置Jenkins如何创建自由风格项目和Pipeline项目如何配置构建触发器和构建步骤实战演练Java Maven项目的自动化构建任何工具出现的最初目的都是为了提高生产效率。所以在工作或生活中,多创造工具,让自己变得更懒,却更有价值!
现在,就去配置你的Jenkins,让代码自个儿打包,准时下班约会去吧!