创建第一个Jenkins Freestyle项目 - 从零开始自动化构建

一、前言
前面的文章我们安装了Jenkins,了解了界面操作。现在到了最激动人心的时刻——创建你的第一个Jenkins构建任务!本文将带你从零开始创建一个Freestyle项目,这是Jenkins最基础也最直观的任务类型。
二、什么是Freestyle项目
Freestyle项目是Jenkins最传统的任务类型,它的特点是:
- 图形化配置:通过网页界面勾选、填写表单来配置,不需要写代码
- 简单直观:适合新手入门和简单构建场景
- 灵活性有限:无法像Pipeline那样定义复杂的流程
什么时候用Freestyle?
- 简单的编译打包任务
- 定时执行脚本
- 快速验证某个构建步骤
- 不需要复杂流程的简单项目
三、创建Freestyle项目
3.1 新建任务
步骤:
- 1. 点击左侧菜单 "New Item"(新建任务)
- 2. 输入任务名称,如
my-first-build - 3. 选择 "Freestyle project"(自由风格项目)
- 4. 点击 "OK"
进入配置页面后,你会看到多个配置区域,我们逐一讲解。
3.2 General(通用配置)
这里是一些基本设置:
- Description(描述):给任务写个说明,方便团队理解
- Discard old builds(丢弃旧的构建):
- Days to keep builds:保留多少天的构建记录
- Max # of builds to keep:最多保留多少条构建记录
- 建议设置,否则构建记录会越来越多,占用磁盘空间
- This project is parameterized(参数化构建):后面会专门讲
- Build periodically(定时构建):按时间表自动触发构建
四、源码管理(Source Code Management)
如果你的项目需要从Git仓库拉取代码,在这里配置。
4.1 配置Git仓库
选择"Git",填写:
- Repository URL:Git仓库地址
- HTTPS方式:
https://github.com/username/project.git - SSH方式:
git@github.com:username/project.git
- HTTPS方式:
- Credentials:选择之前配置的Git凭据
- Branches to build:指定分支,如
*/main或*/develop
4.2 高级Git配置
点击"Additional Behaviours"的"Add"按钮,可以添加:
- Check out to specific local branch:检出到指定本地分支
- Clean after checkout:检出后清理未跟踪的文件
- Sparse Checkout paths:只检出指定目录(大仓库很有用)
- Clone options:设置克隆深度(shallow clone)
# 浅克隆示例 - 只拉取最近5次提交,加快速度
Depth: 5
# 稀疏检出示例 - 只检出src目录
Sparse Checkout paths: src
五、构建触发器(Build Triggers)
构建触发器决定了"什么时候开始构建",这是自动化的核心。
5.1 定时构建(Build periodically)
使用Cron表达式定时触发构建:
# 格式:分 时 日 月 星期
# 每天凌晨2点构建
H 2 * * *
# 每15分钟构建一次
H/15 * * * *
# 工作日每天上午9点构建
H 9 * * 1-5
# 每小时构建一次
H * * * *
注意:用 H 代替具体的分钟数,Jenkins会自动分散负载。比如 H 2 * * * 可能会在2:00-2:59之间的某个时间点执行。
5.2 轮询SCM(Poll SCM)
定期检查代码仓库是否有新的提交,有新提交就触发构建:
# 每5分钟检查一次
H/5 * * * *
# 工作时间每10分钟检查
H/10 9-18 * * 1-5
注意:Poll SCM会持续请求Git服务器,占用资源。推荐使用Webhook代替(后续文章会讲)。
5.3 触发远程构建
通过HTTP请求触发构建:
- 勾选"Trigger builds remotely"
- 设置一个Authentication Token,如
my-build-token - 触发URL:
JENKINS_URL/job/my-first-build/build?token=my-build-token
# 使用curl触发构建
curl -X POST "http://jenkins-server:8080/job/my-first-build/build?token=my-build-token"
# 带参数触发
curl -X POST "http://jenkins-server:8080/job/my-first-build/buildWithParameters?token=my-build-token&env=dev"
5.4 其他项目构建后触发
勾选"Build after other projects are built",填写上游项目名称。当上游项目构建完成后,自动触发当前项目。
六、构建步骤(Build Steps)
这是最核心的配置——定义Jenkins要做什么。
6.1 执行Shell脚本
选择"Execute shell"(Linux)或"Execute Windows batch command"(Windows):
#!/bin/bash
echo "===== 开始构建 ====="
# 显示当前环境
echo "工作目录: $(pwd)"
echo "当前用户: $(whoami)"
echo "Java版本:"
java -version
# 编译项目(以Java Maven项目为例)
echo "===== 编译打包 ====="
mvn clean package -DskipTests
# 显示构建结果
echo "===== 构建完成 ====="
ls -la target/*.jar
# 输出构建信息
echo "构建时间: $(date)"
echo "构建号: ${BUILD_NUMBER}"
echo "构建ID: ${BUILD_ID}"
6.2 调用Maven目标
如果安装了Maven Integration插件,可以选择"Invoke top-level Maven targets":
- Maven Version:选择之前配置的Maven
- Goals:填写Maven命令,如
clean package -DskipTests - POM:指定pom.xml路径(如果不在根目录)
6.3 执行Python脚本
# 在Shell步骤中执行Python
python3 -c "
import os
import subprocess
print('当前工作目录:', os.getcwd())
print('环境变量 BUILD_NUMBER:', os.environ.get('BUILD_NUMBER', 'N/A'))
# 执行Python脚本
result = subprocess.run(['python3', 'scripts/build.py'], capture_output=True, text=True)
print(result.stdout)
if result.returncode != 0:
print('构建失败:', result.stderr)
exit(1)
"
6.4 多个构建步骤
可以添加多个构建步骤,按顺序执行:
- Step 1:拉取代码(自动完成)
- Step 2:编译打包
- Step 3:运行单元测试
- Step 4:构建Docker镜像
- Step 5:推送镜像到仓库
七、构建后操作(Post-build Actions)
构建完成后要做什么?这里配置。
7.1 归档构建产物
选择"Archive the artifacts":
- Files to archive:
target/*.jar或dist/** - 构建成功后,可以在Jenkins页面下载这些文件
7.2 邮件通知
选择"E-mail Notification":
- Recipients:收件人邮箱,多个用空格分隔
- 勾选"Send e-mail for every unstable build":不稳定构建也发邮件
7.3 构建其他项目
选择"Build other projects":
- 当前项目构建成功后,触发其他项目构建
- 形成构建链:项目A → 项目B → 项目C
7.4 Publish HTML reports
可以发布HTML报告,如测试报告、覆盖率报告:
- HTML directory to archive:
target/site - Index page:
index.html - Report title:
Test Report
八、构建环境配置
在"Build Environment"区域,还有一些实用设置:
8.1 删除工作空间
勾选"Delete workspace before build starts",每次构建前清理工作空间,确保构建的干净性。
8.2 设置环境变量
勾选"Add timestamps to the Console Output",在构建日志中添加时间戳,方便排查问题。
8.3 注入环境变量
使用"Inject environment variables to the build process":
# 环境变量内容
BUILD_ENV=development
APP_VERSION=1.0.${BUILD_NUMBER}
DEPLOY_SERVER=192.168.1.100
九、构建与查看结果
9.1 手动触发构建
配置完成后,点击左侧 "Build Now",你会看到构建队列和执行器中出现新的构建。
9.2 查看构建日志
点击构建号(如 #1) → "Console Output",查看实时构建日志。这是排查构建问题最重要的工具。
9.3 构建状态说明
- 🔵 蓝色:构建成功
- 🔴 红色:构建失败
- 🟡 黄色:构建不稳定(成功但有测试失败)
- ⚪ 灰色:构建被中止或尚未构建
9.4 常用构建变量
在Shell脚本中可以使用Jenkins内置变量:
BUILD_NUMBER # 构建号,如 42
BUILD_ID # 构建ID,如 2024-01-15_10-30-00
BUILD_TAG # 标签,如 jenkins-myproject-42
JOB_NAME # 任务名称
BUILD_URL # 构建页面的URL
WORKSPACE # 工作空间路径
GIT_COMMIT # 当前Git提交哈希
GIT_BRANCH # 当前Git分支
NODE_NAME # 执行构建的节点名称
十、实战:创建一个完整的Java项目构建
让我们把前面学到的知识综合起来,创建一个完整的Java项目构建任务。
配置清单:
- 任务名称:
java-app-build - 源码管理:Git,从GitHub拉取代码
- 构建触发器:Poll SCM,每5分钟检查
- 构建步骤1:Maven编译打包
- 构建步骤2:构建Docker镜像
- 构建步骤3:推送Docker镜像
- 构建后操作:归档jar包、邮件通知
# 构建步骤1:Maven编译
clean package -DskipTests
# 构建步骤2:构建Docker镜像
docker build -t myapp:${BUILD_NUMBER} .
docker tag myapp:${BUILD_NUMBER} registry.example.com/myapp:${BUILD_NUMBER}
docker tag myapp:${BUILD_NUMBER} registry.example.com/myapp:latest
# 构建步骤3:推送镜像
docker push registry.example.com/myapp:${BUILD_NUMBER}
docker push registry.example.com/myapp:latest
echo "Docker镜像推送完成: registry.example.com/myapp:${BUILD_NUMBER}"
十一、总结
本文手把手带你创建了第一个Freestyle项目:
- 项目创建:New Item → Freestyle project
- 源码管理:配置Git仓库和凭据
- 构建触发器:定时构建、轮询SCM、远程触发
- 构建步骤:Shell脚本、Maven目标、Python脚本
- 构建后操作:归档产物、邮件通知、触发下游
- 实战演练:完整的Java项目构建配置
下一篇我们将学习Jenkins Pipeline——Jenkins的现代化构建方式,更强大、更灵活!







