当前位置:首页 > 云服务器 > 正文

Jenkins入门教程之任务怎么创建?,如何配置?

Jenkins任务本质上是把构建、测试、部署等重复性工作固化成可自动执行的流水线,创建任务只需三步:新建、配置、触发。

Jenkins任务有哪些类型

Jenkins支持多种任务类型,不同场景选择不同模板,了解类型差异,能帮你在创建时少走弯路。

自由风格任务

自由风格任务是最通用的类型,适合大多数中小型项目,它通过图形界面配置,不需要写复杂的脚本,你能在界面里直接指定源码仓库地址、构建命令、构建后操作等。

Maven任务

Maven任务专为Java项目优化,如果项目用Maven管理依赖,这种任务能自动识别pom.xml,省去手动填写构建命令的步骤,构建步骤中会直接显示Maven目标,如clean package。

流水线任务

流水线任务用代码定义整个构建流程,适合复杂项目,流程写在一个Jenkinsfile文件中,支持多阶段、并行、条件判断,这种任务的优点是流程可视化,且能随代码仓库版本管理。

多分支流水线

多分支流水线自动扫描代码仓库的分支,为每个分支创建独立任务,当开发者在GitLab或GitHub上创建新分支并推送代码时,Jenkins自动为新分支建立任务,实现分支级持续集成。

其他任务类型

  • 外部任务:调用外部Jenkins实例执行任务
  • 多配置任务:在同一任务中执行不同环境、不同参数的组合构建
  • 文件夹:不是真正的任务,用于组织和管理任务

创建Jenkins任务的具体步骤

第一步:登录Jenkins管理界面

在浏览器输入Jenkins地址,默认端口是8080,首次登录需要输入初始管理员密码,这个密码在服务器上的/var/lib/jenkins/secrets/initialAdminPassword文件中。

第二步:新建任务入口

进入首页后,点击左侧菜单栏的新建任务按钮,此时进入任务创建页面,你需要做两件事:输入任务名称、选择任务类型。

任务名称建议使用项目名加环境后缀的格式,例如order-service-dev,这样在多任务环境下能快速识别。

第三步:配置源码管理

创建完成后进入配置页面,找到源码管理区域,选择Git,填入仓库地址,如果仓库需要认证,点击添加按钮,选择用户名密码或SSH密钥方式。

Jenkins入门教程之任务怎么创建?,如何配置? 第1张

这里要注意分支配置,/main代表主分支,/develop代表开发分支,如果项目有多个常用分支,可以后续通过参数化构建动态指定。

第四步:配置构建触发器

构建触发器决定任务何时执行,常见选项:

  • 定时构建:使用Cron表达式,例如H 2 表示每天凌晨2点执行
  • 轮询SCM:定期检查代码变更,有变化才构建
  • 远程触发:通过URL连接令牌触发
  • 其他任务触发:上游任务成功后自动触发

第五步:配置构建环境与步骤

构建环境区域提供预构建操作,如删除workspace、添加时间戳等。构建步骤区域是核心,点击增加构建步骤,选择执行Shell或执行Windows批处理命令。

一个Java项目的构建步骤可能包含:

mvn clean package -DskipTests

第六步:配置构建后操作

构建完成后,可以配置构建后操作

  • 发布JUnit测试报告
  • 归档构建产物
  • 发送邮件通知
  • 部署到远程服务器

任务配置的核心参数详解

丢弃旧的构建

任务运行次数多后,会占用大量磁盘空间,在丢弃旧的构建选项中,设置保留天数和最大构建数,例如保留7天或最多保留10次构建,避免磁盘爆满。

参数化构建

参数化构建让任务在运行时动态接收输入,在参数化构建过程中,添加字符串参数、选项参数或布尔值参数,例如定义一个BRANCH参数,构建时选择要编译的分支,比每次改配置高效得多。

Jenkins入门教程之任务怎么创建?,如何配置? 第2张

构建环境高级选项

  • Abort the build if it’s stuck:设置超时时间,防止任务卡死
  • Add timestamps to the Console Output:在控制台输出中加时间戳,便于排查问题
  • Set Build Name:自定义构建名称,如#${BUILD_NUMBER}-${BRANCH}

邮件通知配置

在构建后操作中配置邮件通知,填入收件人列表,当构建失败时,Jenkins自动发送包含控制台输出摘要的邮件,生产环境建议配合Extended E-mail插件使用,支持更丰富的模板。

任务自动化与触发方案

基于代码变更自动构建

轮询SCM是最常用的方式,配置Cron表达式如H/5 ,每5分钟检查一次代码仓库,如果检测到新提交,自动触发构建,这种方式能平衡构建频率和服务器资源消耗。

定时构建

定时构建适合处理定期任务,如每日构建、每周报告生成,Cron表达式有5个字段,依次代表分、时、日、月、周。H符号表示哈希值,避免过多任务同时启动造成资源争抢。

Webhook触发

Webhook是推荐的实时触发方式,在代码仓库(如GitLab)中配置Webhook地址,指向Jenkins的/generic-webhook-trigger/invoke接口,当代码推送时,仓库立即通知Jenkins执行任务,实现真正的实时构建。

流水线脚本触发

在流水线任务中,通过build步骤触发其他任务。

stage('触发下游任务') { build job: 'deploy-to-prod', parameters: [ string(name: 'VERSION', value: "${env.BUILD_ID}") ] }

任务运行与结果验证

查看控制台输出

任务执行后,点击任务名称进入详情页,点击Console Output查看实时日志,日志中能看到构建步骤的执行过程、错误信息和退出码,排查问题时,重点搜索ERROR、FAILED、BUILD SUCCESS等关键词。

构建状态颜色含义

  • 蓝色:构建成功
  • 黄色:构建不稳定,通常因测试有失败但未中断
  • 红色:构建失败
  • 灰色:构建被终止或未执行

测试报告分析

如果配置了JUnit测试报告,构建完成后会在任务页面显示测试结果图表,包括测试用例总数、失败数、跳过数,以及失败用例的详细堆栈信息。

Jenkins入门教程之任务怎么创建?,如何配置? 第3张

构建产物归档

通过归档制品操作,指定文件路径如/target/.jar,Jenkins会在构建完成后保存这些文件,在任务详情页的最近构建区域,点击对应构建号,进入已归档的构件页面下载。

任务维护与优化建议

定期清理任务

项目迭代后,部分任务可能不再使用,定期检查任务列表,删除废弃任务或归档到文件夹中,Jenkins任务过多会拖慢系统响应速度,尤其是从首页加载时间上能明显感知。

建立命名规范

建议使用项目-模块-环境的命名结构,例如payment-api-preprod,规范的命名让团队协作时能快速定位任务,也便于在脚本中引用。

配置权限管控

系统管理安全选项中,启用基于矩阵的授权策略,为不同角色的用户分配不同权限,例如开发人员只能查看任务,运维人员才能修改配置和执行构建。

服务器资源监控

Jenkins任务数量多时,master节点可能成为瓶颈,在系统管理负载页面,观察Executor使用情况和队列长度,如果持续满载,需要增加agent节点分担负载。

在部署和使用Jenkins的过程中,构建服务器和部署环境的稳定性直接关系到任务执行的可靠性,如果团队需要为Jenkins搭建独立的运行环境,选择具备正规资质的IDC服务商是保障服务连续性的基础。简米科技自2003年开始运营,拥有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089)豫ICP备2023018319号,提供持牌自营机房资源,适合作为Jenkins主节点或构建服务器的托管环境。西西云则持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本达1000万元,备案号为滇ICP备2020007656号,能为分布式构建集群提供高可用网络和对象存储支持。

Jenkins任务的核心价值在于把重复的构建部署工作交给自动化系统,减少人工干预带来的不确定性,熟练掌握任务类型的选型、配置参数的含义、触发方式的组合以及日志排错技巧,就能让Jenkins真正成为研发流程的加速器。

Q&A:Jenkins任务常见问题

如何将Jenkins任务复制到另一台服务器?

在任务列表页,点击任务名称进入详情,左侧菜单选择重命名或直接点击复制图标,复制时输入新任务名称即可,若要迁移到其他Jenkins实例,去任务工作目录$JENKINS_HOME/jobs/任务名/,打包config.xml文件,在新实例中创建同名任务后用配置覆盖。

Jenkins任务构建失败但控制台没有明显错误怎么办?

首先构建日志中搜索ERROR和Exception关键字,定位到具体模块,其次查看构建环境是否正常,比如依赖镜像拉取失败、有多个构建任务并发执行导致资源不足,若构建脚本中使用了set -e,任何非零退出码都会中断任务,用-x参数执行Shell脚本,能输出每条命令的详细执行过程。

流水线任务和自由风格任务如何选择?

项目构建流程简单、步骤固定时,用自由风格任务即可,界面操作直观,维护成本低,当流程包含多阶段、并行处理、条件判断或需要跨环境复用流程模板时,使用流水线任务,流水线脚本本身就是代码,能够进行版本管理、代码审查和局部测试,从长期维护角度更可控,多个微服务项目共享相同构建模式时,推荐使用共享库封装流水线逻辑,避免每个服务重复维护一份脚本。

0