Jenkins基础教程(159)Jenkins构建配置作业:Jenkins构建大法:你的代码自个儿会打包!

  • 时间:2025-11-26 21:07 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:每次手动打包到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手来干活? 第一章:认识Jenkins,你的构建管家 1.1 CI/CD:到底是个啥?为啥非得用它? 别被这些术语吓到,其实超简单!想象一下你做饭(代码开发): 买菜 (Coding):吭哧吭哧写代码。洗切配 (Building):得把代码“处理”成能跑的程序(编译、打包)。尝味道 (Testing):自己先尝尝

每次手动打包到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手来干活?

第一章:认识Jenkins,你的构建管家

1.1 CI/CD:到底是个啥?为啥非得用它?

别被这些术语吓到,其实超简单!想象一下你做饭(代码开发):

买菜 (Coding):吭哧吭哧写代码。洗切配 (Building):得把代码“处理”成能跑的程序(编译、打包)。尝味道 (Testing):自己先尝尝咸淡(单元测试、简单功能测试)。上桌 (Deployment):端给客人(部署到测试/生产环境)。

传统手工模式:你一个人吭哧吭哧干完1234步。累了不说,步骤4万一失手(比如烫到手),整盘菜撒一地… 完犊子!客人饿肚子,你也崩溃。

CI/CD 自动化流水线模式:这是你开了个“自动化厨房”!

CI (持续集成):只要你买好菜放进口袋(代码提交到仓库,如GitHub)! 自动洗切配(自动构建)自动尝咸淡(自动运行测试)核心目标:快速发现“菜”本身的问题!!!酸了?糊了?咸了?马上告诉你! CD (持续交付/持续部署):CI验证合格的“预制菜”,可以: 自动打包好,随时能上桌(持续交付 - 准备好部署包)。或者,直接自动端上指定餐桌(持续部署 - 自动部署到测试/生产环境)。核心目标:让“好菜”能又快又好地送到“客人”面前!

Jenkins就是那个帮你搭建和管理这个“自动化厨房”的超级管家!你只管提交代码(买菜),它帮你搞定后面所有流水线操作,还能随时报告“菜”的质量!稳不稳?

第二章:Jenkins环境准备,打好地基

2.1 安装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

2.2 初始设置

首次访问Jenkins(通常是http://localhost:8080),会进入初始化设置向导:

解锁Jenkins:从Jenkins控制台日志中获取初始管理员密码,在解锁页面输入安装插件:建议选择**“安装推荐插件”**,这会安装最常用的插件集合创建管理员用户:设置你的管理员账号和密码,以后就用这个账号登录

2.3 检查插件安装

为确保项目的完整功能,请检查以下关键插件是否已安装:

Git插件:用于从Git仓库拉取代码Credentials插件:安全管理各种凭证Email Extension插件:邮件通知功能Workspace Cleanup插件:清理工作空间

如果缺少某些插件,可以在**“系统管理” → “插件管理”**中搜索安装。

第三章:创建第一个自由风格构建作业

3.1 新建项目

让我们开始创建第一个自由风格项目:

在Jenkins主页面,点击左侧菜单的**“新建任务”**输入任务名称,例如**“My-First-Freestyle-Project”**选择**“构建一个自由风格的软件项目”**点击**“确定”**进入配置页面

命名技巧:任务名称应有明确含义,便于后续识别和管理。注意创建后不要轻易更改名称,因为很多内部文件都是以任务名称命名的。

3.2 通用配置(General)

在通用配置部分,我们需要设置一些项目的基本信息:

项目描述:简要描述项目的用途,例如“这是一个示例前端项目,用于演示Jenkins构建流程”丢弃旧的构建:这是重要的维护设置,可以防止构建历史占用过多磁盘空间。建议设置: 保持构建的天数:7天保持构建的最大个数:10-20个 参数化构建:如果需要根据不同参数执行不同构建流程,可以在这里定义参数。例如,定义部署环境参数(开发/测试/生产)。

3.3 源码管理(Source Code Management)

这是自动化构建的关键——告诉Jenkins从哪里获取代码:

选择Git(如果你使用其他版本控制系统,如SVN,请选择对应选项)在Repository URL中输入你的代码仓库地址配置认证信息: 如果使用SSH认证,需要添加SSH私钥如果使用HTTP认证,需要添加用户名和密码

3.4 构建触发器(Build Triggers)

构建触发器决定何时启动自动构建,常见的触发器有:

定时构建:像cronjob一样按计划执行,例如每15分钟一次: H/15 * * * *轮询SCM:定期检查代码仓库是否有变更,有变更则构建GitLab webhook:当代码推送到GitLab时,自动触发构建其他项目触发:当其他项目构建完成后触发当前项目

3.5 构建(Build)

这是构建过程的核心部分,可以添加多个构建步骤。对于自由风格项目,最常见的构建步骤是执行Shell脚本或Windows批处理命令。

示例Shell脚本:



echo "开始构建..."
# 显示构建信息
echo "当前工作目录:$(pwd)"
echo "构建编号:$BUILD_NUMBER"
# 安装依赖
npm install
# 运行测试
npm test
# 构建项目
npm run build
echo "构建完成!"

注意:Jenkins执行Shell脚本时,默认工作目录是Jenkins主目录/workspaces/以job名称命名的文件夹。

3.6 构建后操作(Post-build Actions)

构建完成后,我们通常需要做一些后续工作:

归档制品:将构建产物(如JAR、WAR文件)保存起来发布JUnit测试结果报告:如果项目有单元测试,可以生成测试报告邮件通知:将构建结果通知相关人员触发其他项目:构建成功后自动触发下游任务

第四章:进阶玩法:Pipeline as Code

自由风格任务上手快,但配置复杂流水线时,界面操作就有点力不从心且不易维护了。Jenkins Pipeline(流水线) 是更强大、更灵活、也更推荐的方式!核心思想:用代码(Groovy DSL)定义你的整个构建、测试、部署流程!

4.1 为啥要用Pipeline?好处大大滴!

版本化:Pipeline脚本(通常叫Jenkinsfile)可以跟项目代码一起存在Git仓库里!修改流程就像改代码一样清晰可追溯。可重用:定义好的Pipeline步骤可以复用在不同项目。复杂流程支持:轻松处理并行执行、条件判断等复杂场景。可视化:Pipeline的 Stages View 可以清晰展示每个阶段的执行状态和时间。

4.2 Pipeline入门示例

创建一个名为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应用

5.1 项目背景

假设我们有一个简单的Java Maven项目,代码存放在GitLab上。现在需要配置Jenkins实现以下目标:

当代码推送到GitLab时自动构建执行构建过程(编译、运行测试)将构建产物归档构建结果通过邮件通知团队

5.2 详细配置步骤

5.2.1 项目基本信息
项目名称:java-maven-pipeline描述:Java Maven项目自动化构建
5.2.2 创建Pipeline项目
在Jenkins中,选择**“新建Item”**输入项目名称**“java-maven-pipeline”**选择**“Pipeline”类型,点击“OK”**在Pipeline部分,选择**“Pipeline script from SCM”**选择**“Git”**,输入你的仓库URL在**“Script Path”**中指定Jenkinsfile的路径(默认为Jenkinsfile)
5.2.3 编写Jenkinsfile

在项目根目录创建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'
            }
        }
    }
}

第六章:Jenkins构建触发器全解析

6.1 内置触发器详解

在Ubuntu上配置Jenkins的构建触发器,有几种常见方式,下表汇总了常用的4种内置触发器、配置位置与示例:

触发器

配置位置

关键配置

典型示例与说明

触发远程构建

项目配置 → 构建触发器 → 勾选“触发远程构建”,设置身份验证令牌

生成 URL:JENKINS_URL/job/

示例: http://192.168.1.10:8080/job/demo/build?token=abc123;适合脚本、外部系统、按钮触发

其他工程构建后触发

项目配置 → 构建触发器 → 勾选“Build after other projects are built”

选择前置工程;可勾选“只有构建稳定时触发”

用于串联流水线/多模块,前置成功后自动触发本工程

定时构建 Build periodically

项目配置 → 构建触发器 → “日程表”

使用 Cron 语法(分 时 日 月 周),建议用 H 平滑负载

示例: H/30 * * * *(每 30 分钟); H 2 * * *(每天 2:00)

轮询 SCM Poll SCM

项目配置 → 构建触发器 → “日程表”

定时扫描远端仓库变更,变更则触发

示例: H/5 * * * *(每 5 分钟);注意其会定时拉取代码,存在一定开销

说明与要点

Cron 字段顺序为:分 时 日 月 周;H 表示“哈希分散”,避免同一时刻集中触发。轮询 SCM 与“定时构建”不同:前者以“代码是否有变更”为条件,后者以“时间”为条件;轮询会带来额外负载,通常优先使用 Webhook 替代。

6.2 代码托管平台的Webhook触发

6.2.1 GitHub
安装插件:GitHub plugin(或 GitHub Integration 插件)项目配置 → 构建触发器 → 勾选 “GitHub hook trigger for GITScm polling”GitHub 仓库 → Settings → Webhooks → Add webhook Payload URL:JENKINS_URL/github-webhook/Content type:application/jsonEvents:选择 Push events(可按需选 Pull requests 等)勾选 Active,保存后测试推送,Jenkins 应自动触发构建
6.2.2 GitLab
安装插件:GitLab PluginGitLab Webhook Trigger项目配置 → 构建触发器 → 勾选 “Build when a change is pushed to GitLab”(或“GitLab webhook”)GitLab 项目 → Settings → Webhooks URL:JENKINS_URL/project/Trigger:Push events、Merge Request events 等若 Jenkins 在内网,需在 GitLab 管理后台开启:Admin → Settings → Network → Outbound requests → Allow requests to the local network from web hooks and services保存并发送测试请求,确认返回 HTTP 200 后,推送代码验证自动触发

提示:Webhook是“事件驱动”,相较“轮询 SCM”延迟更低、资源占用更少,推荐优先采用。

第七章:高级技巧与最佳实践

7.1 环境变量与参数化构建

Jenkins提供了丰富的环境变量,可以在构建过程中使用。以下是一些常用的环境变量:

BUILD_NUMBER:当前的构建号 JOB_NAME:当前作业的名称 WORKSPACE:当前作业的工作空间路径

参数化构建可以让你的构建过程更加灵活。你可以定义字符串参数、选择参数、布尔值参数等,然后在构建过程中使用这些参数。

7.2 凭证管理

在Jenkins中,Credentials Plugin提供了安全管理敏感信息的能力,比如密码、API密钥、SSH私钥等。你可以通过以下步骤添加凭证:

进入 Manage JenkinsManage Credentials点击 Global credentials (unrestricted)点击 Add Credentials 添加新的凭证

在项目配置中,你可以通过 $VAR_NAME的方式引用这些凭证,确保敏感信息不会明文出现在配置中。

7.3 分布式构建

当单个Jenkins实例无法满足构建需求时,你可以设置主从架构,将构建任务分发到多个代理节点上执行。这可以:

提高构建效率,并行执行多个任务隔离不同环境(如Windows、Linux、macOS)分担主节点负载,提高系统稳定性

总结:让自己变懒,却更有价值!

教科书上把会不会制造工具当做人和动物的根本区别,我觉得这也是判断一个好程序员的标准之一。优秀的程序员总是会去寻找好的工具,或者自己去创造一些工具来提高自己的生产效率,他们通过工具把那些浪费在重复劳动上的时间花在了更有意义的事情上去。

Jenkins就是这样一款能够极大提升生产效率的神器。通过本文的介绍,你应该已经掌握了:

Jenkins的基本概念和CI/CD核心思想如何安装和配置Jenkins如何创建自由风格项目和Pipeline项目如何配置构建触发器和构建步骤实战演练Java Maven项目的自动化构建

任何工具出现的最初目的都是为了提高生产效率。所以在工作或生活中,多创造工具,让自己变得更懒,却更有价值!

现在,就去配置你的Jenkins,让代码自个儿打包,准时下班约会去吧!

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】交换机.路由器.防火墙-技术提升【4.3】(2025-11-26 22:52)
【系统环境|】交换机.路由器.防火墙-技术提升【4.2】(2025-11-26 22:51)
【系统环境|】交换机.路由器.防火墙-技术提升【4.1】(2025-11-26 22:51)
【系统环境|】交换机.路由器.防火墙-技术提升【4.0】(2025-11-26 22:50)
【系统环境|】交换机.路由器.防火墙-技术提升【3.9】(2025-11-26 22:50)
【系统环境|】i.mx8 HDMI显示分辨率异常(软件排查)(2025-11-26 22:49)
【系统环境|】Node.js环境变量配置实战(2025-11-26 22:49)
【系统环境|】交换机.路由器.防火墙-技术提升【3.8】(2025-11-26 22:48)
【系统环境|】交换机.路由器.防火墙-技术提升【3.7】(2025-11-26 22:48)
【系统环境|】10.MHA的部署(2025-11-26 22:47)
手机二维码手机访问领取大礼包
返回顶部