4、创建第一个自由风格项目:从零搭建你的第一条流水线

好,咱们现在开始动手了。

前面几章讲了 Jenkins 的安装、配置、插件管理,说实话,都是铺垫。真正有意思的,是从你创建第一个任务开始。我记得我第一次用 Jenkins 时,面对那个「新建任务」按钮,愣是犹豫了五分钟——怕点错了把服务器搞崩。其实没那么玄乎,今天我就带你走一遍完整流程。

4.1 新建任务:选对项目类型

登录 Jenkins 后,首页左侧有个「新建任务」的链接,点进去。

你会看到几个选项:

  • 自由风格项目:最灵活,啥都能干。我建议新手从这里入手。
  • Maven 项目:专门给 Java 项目用的,其实底层也是自由风格。
  • 流水线:用 Jenkinsfile 定义,适合复杂场景。咱们后面章节会讲。

选「自由风格项目」,输入任务名称,比如 my-first-job,点确定。

小提示:任务名称建议用英文小写加连字符,比如 frontend-buildapi-deploy。中文名虽然支持,但我在项目中遇到过因为编码问题导致日志乱码的情况,后来就统一用英文了。

4.2 配置源码管理(Git)

进入任务配置页,找到「源码管理」那一栏。

Git,然后填三个东西:

  • Repository URL:你的 Git 仓库地址。比如 https://github.com/yourname/hello-world.git
  • Credentials:认证信息。如果是公开仓库,选「无」就行。私有仓库需要添加用户名密码或 SSH 密钥。
  • Branches to build:默认是 */master,也可以改成 */main*/develop

嗯,这里要注意:

如果你用的是 SSH 协议(比如 git@github.com:xxx.git),Jenkins 所在服务器必须配好 SSH 密钥。我刚开始用的时候,忘了把公钥加到 GitHub 上,结果 Jenkins 一直报「Host key verification failed」,折腾了半小时才发现是这问题。

避坑指南:我曾经在配置 Git 时,把仓库地址写成了 HTTPS 但没配凭证,结果每次构建都要求输入密码。后来我统一改用 SSH 方式,一劳永逸。

4.3 构建触发器:让 Jenkins 自动干活

触发器决定了「什么时候开始构建」。常用的有几种:

触发器类型 适用场景 配置方式
定时构建 每天固定时间跑一次,比如凌晨做全量测试 填写 cron 表达式,如 H 2 * * *
轮询 SCM 定期检查 Git 仓库是否有新提交 填写 cron 表达式,如 H/5 * * * *
Webhook 触发 代码提交后立即触发,实时性最高 需安装插件,在 Git 仓库配置 webhook URL

我个人习惯用 Webhook。你想想看,代码一提交,Jenkins 马上开始构建,多爽。但如果你刚开始学,可以先选「轮询 SCM」,每 5 分钟检查一次,够用了。

注意:轮询 SCM 会频繁访问 Git 仓库,如果仓库很大或者项目很多,可能会给 Git 服务器造成压力。我见过一个团队,20 个项目都设了每分钟轮询,结果 GitLab 直接卡死了。后来改成 Webhook,世界清净了。

4.4 构建步骤(Shell 命令):真正干活的地方

往下翻,找到「构建」那一栏,点「增加构建步骤」,选「执行 shell」。

这里写的就是你平时在终端里敲的命令。比如:

#!/bin/bash
echo "开始构建..."
cd $WORKSPACE
npm install
npm run build
echo "构建完成!"

为什么用 $WORKSPACE?这是 Jenkins 内置的环境变量,指向当前任务的工作目录。说白了,就是 Jenkins 把代码下载到哪个文件夹,$WORKSPACE 就指向哪里。

我再给你一个更完整的例子:

#!/bin/bash
set -e  # 遇到错误就停止,别硬撑

echo "===== 步骤1:安装依赖 ====="
npm install

echo "===== 步骤2:运行测试 ====="
npm test

echo "===== 步骤3:打包 ====="
npm run build

echo "===== 步骤4:归档 ====="
tar -czf dist.tar.gz dist/
echo "打包文件大小:"
ls -lh dist.tar.gz
小技巧:在 Shell 命令里加 set -e,这样任何一步失败,整个构建都会标记为失败。我曾经没加这个,结果 npm install 失败了,但后续命令还在跑,最后构建显示成功,实际上产物是坏的。嗯,从那以后我每条流水线都加 set -e

4.5 构建后操作:善后工作不能少

构建跑完了,然后呢?

「构建后操作」就是干这个的。点「增加构建后操作步骤」,常见的有:

  • 归档制品:把构建产物保存起来,比如 dist/*.tar.gz
  • 发布测试报告:如果生成了 JUnit 格式的测试结果,可以在这里配置
  • 发送邮件通知:构建失败时给团队发邮件
  • 触发下游项目:这个构建成功后,自动触发另一个 Jenkins 任务

我一般至少会配「归档制品」和「邮件通知」。你想想看,构建产物不保存,那构建出来干嘛用?邮件通知不配,构建失败了都没人知道。

配置归档制品很简单:

  • 在「归档制品」输入框里写 dist/*.tar.gz
  • Jenkins 会自动把匹配的文件保存到构建记录里

邮件通知稍微复杂点,需要先配好 Jenkins 的系统邮件设置。不过别担心,咱们后面有专门章节讲这个。

核心要点:一个完整的自由风格项目,就是「拉代码 → 触发构建 → 执行命令 → 保存产物」这四步。你把这四步走通了,Jenkins 的基本功就算打牢了。

4.6 保存并运行

所有配置完成后,点底部的「保存」按钮。

回到任务页面,你会看到一个「立即构建」的按钮。点一下,看看控制台输出。

如果一切顺利,你会看到蓝色圆点(表示成功)。如果是红色,点进去看日志,排查问题。

说实话,第一次跑通的时候,那种成就感还是挺爽的。虽然只是简单的 Shell 命令,但你已经让 Jenkins 帮你自动完成了一套流程。后面咱们会在这个基础上,一步步加上测试、部署、通知,最终打造一条完整的 CI/CD 流水线。

下一章,咱们聊聊参数化构建——让同一个任务能根据不同的参数执行不同的逻辑。这个在实际项目中非常实用。