3. 创建第一个 Freestyle 项目

_

Freestyle vs Pipeline:我该怎么选?

好,在动手之前,咱得先搞清楚一件事:Jenkins 给我们准备了两大类项目类型,一个是 Freestyle Project(自由风格项目),另一个是 Pipeline(流水线项目)

特性

Freestyle

Pipeline

配置方式

Web界面可视化配置

代码化配置( Jenkinsfile)

学习曲线

低,上手快

中,需要学习 DSL 语法

版本控制

配置分散,难以追踪变更

配置在代码库中,版本管理友好

可复用性

差,复制粘贴

高,共享库支持

条件逻辑

弱,依赖插件

强,完整编程能力

适用场景

简单构建、快速验证

复杂CI/CD流程、团队协作

什么时候用 Freestyle?

  • 刚学习 Jenkins,想快速看到效果

  • 构建步骤简单(拉代码→编译→打包)

  • 临时任务,不需要长期维护

为什么最终要迁移到 Pipeline?

  • Freestyle 的配置存在 Jenkins 内部,一旦误操作丢了就麻烦了

  • Pipeline 可以把构建流程当做代码来管理,配合 Git 使用

  • 团队协作时,Pipeline 的代码审查机制更安全

所以哈,今天咱们学 Freestyle 是为了打基础,后续章节咱们会深入 Pipeline!

创建 Freestyle 项目的完整流程

第一步:新建任务

登录 Jenkins 控制台,点击左侧菜单的 「新建任务」

  1. 输入任务名称,建议用有意义的命名,比如 hello-world-build

  2. 选择 「构建一个自由风格的软件项目」

  3. 点击 「OK」 进入详细配置页面

配置页面有几个Tab,咱一个个来看。

第二步:源码管理配置

这一步是让 Jenkins 知道从哪拉代码。咱们以 Git 为例:

  1. 勾选 Git

  2. Repository URL:填仓库地址,这里有两种方式:

    • HTTPS 克隆https://github.com/username/repo.git

    • SSH 克隆git@github.com:username/repo.git

  3. Credentials:添加访问凭证

凭证配置详解

HTTPS 方式需要配置用户名密码或 Personal Access Token:

# GitHub 生成 Personal Access Token 步骤:
# Settings → Developer settings → Personal access tokens → Generate new token
# 勾选 repo 和 admin:repo_hook 权限

添加凭证:

  1. 点击 「添加」「Jenkins」

  2. 类型选择 「用户名和密码」

  3. 填入 GitHub 用户名和刚才生成的 Token(Token 当密码用)

SSH 方式需要配置 SSH 密钥:

# 1. 生成 SSH 密钥(如果还没有的话)
ssh-keygen -t ed25519 -C "your_email@example.com"
​
# 2. 查看公钥
cat ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAA... your_email@example.com
​
# 3. 把公钥添加到 GitHub/GitLab 的 SSH Keys 设置中

然后在 Jenkins 中添加 「SSH用户名-private key」 类型的凭证。

克隆方式对比

方式

优点

缺点

适用场景

HTTPS

配置简单,防火墙友好

每次可能需要输入凭证

受限网络环境

SSH

无需重复输入密码

需要配置SSH密钥

频繁推送/团队协作

第三步:构建触发器

构建触发器决定了什么时候自动执行构建。常见的有这几种:

定时构建(Build periodically)

使用 cron 表达式,格式是:MINUTE HOUR DOM MONTH DOW

常用示例:

# 每5分钟构建一次
H/5 * * * *
​
# 每天早上8点构建(工作日)
H 8 * * 1-5
​
# 每天下午6点构建
H 18 * * *
​
# 每周一早上9点构建
H 9 * * 1
​
# 每2小时构建一次
H H/2 * * *
​
# 每天凌晨2点构建(适合跑测试)
H 2 * * *

cron 表达式小贴士:

  • MINUTE:分钟,0-59

  • HOUR:小时,0-23

  • DOM:每月几号,1-31

  • MONTH:月份,1-12

  • DOW:每周几,1-7(1=周一,7=周日)

  • H:Hash关键字,让 Jenkins 自动分配时间,避免多任务同时执行

Poll SCM(轮询代码变更)

和定时构建类似,但只有检测到代码变化时才真正构建:

# 每10分钟检查一次代码变化,有变化才构建
H/10 * * * *

⚠️ 注意:Poll SCM 会产生额外的 API 调用,大型项目可能触发 GitHub 的速率限制。如果仓库人多,建议用 Webhook。

Webhook 触发

代码推送时自动触发构建,这是最推荐的方式!咱们会在第4章详细讲。

手动触发 + 参数化构建

在「General」Tab 勾选 「参数化构建过程」,添加字符串参数:

Name: BRANCH
Default Value: main
Description: 要构建的分支名

这样每次构建可以选择不同的参数,超级灵活。

第四步:构建步骤

构建步骤是整个项目的核心,告诉 Jenkins 实际要执行什么操作。

执行 Shell(Linux/Mac)

#!/bin/bash
​
# 打印环境信息
echo "===== 开始构建 ====="
echo "工作目录: $WORKSPACE"
echo "构建编号: $BUILD_NUMBER"
​
# 清理之前的构建产物
mvn clean
​
# 编译项目
mvn compile
​
# 运行测试
mvn test
​
# 打包
mvn package -DskipTests
​
# 输出结果
echo "===== 构建完成 ====="
ls -la target/*.jar 2>/dev/null || echo "没有找到jar包"

执行 Windows Batch

@echo off
echo ===== 开始构建 =====
call mvn clean
call mvn package -DskipTests
echo ===== 构建完成 =====
dir target\\*.jar

调用顶层 Maven 目标

如果安装了 Maven 插件,可以直接选择 Maven 版本和目标:

Maven 版本: Maven 3.9
Goals: clean package -DskipTests
POM 文件: pom.xml

第五步:构建后操作

构建完成后可以做一些收尾工作:

邮件通知

  1. 安装 Email Extension Plugin

  2. 在「构建后操作」添加 「Editable Email Notification」

  3. 配置收件人、邮件内容模板

基础配置示例:

收件人: developer@example.com
主题: $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS
内容: 
  构建结果: $BUILD_STATUS
  构建链接: $BUILD_URL

归档构建产物(Archive artifacts)

把构建产生的文件保存起来,方便后续下载:

Files to archive: target/*.jar

触发其他项目

串联多个构建任务:

Projects to build: other-job-name

常见问题

Q1:克隆代码时报 "Failed to connect to repository"

原因:网络不通或凭证配置错误

解决方案

  1. 检查 Jenkins 机器能否访问 Git 仓库:curl -I https://github.com

  2. 确认凭证有效,试试用同样的凭证在 Jenkins 机器上手动克隆

  3. 如果是内网环境,检查代理设置

Q2:SSH 方式克隆失败,提示 "Permission denied"

原因:SSH 密钥配置问题

解决方案

  1. 确认公钥已添加到 GitHub/GitLab

  2. 在 Jenkins 凭证中正确选择了私钥

  3. 测试 SSH 连接:ssh -T git@github.com(在 Jenkins 机器上执行)

Q3:定时构建没有执行

原因:cron 表达式格式错误

解决方案

  1. cron 表达式是5个字段,不是6个(没有秒)

  2. 用在线 cron 表达式校验器验证

  3. 检查 Jenkins 系统时间是否正确

Q4:构建产物归档后找不到文件

原因:路径写错了

解决方案

  1. 使用通配符更宽松:target/**/*.jar

  2. 在构建脚本中用 pwdls 确认实际路径

  3. 检查「保留较久构建天数」设置,避免被清理


总结

今天咱们学了这些:

  • Freestyle 和 Pipeline 的区别,以及各自的适用场景

  • 如何创建 Freestyle 项目

  • Git 源码管理的两种克隆方式和凭证配置

  • 四种构建触发器:定时、轮询、Webhook、参数化

  • 构建步骤:Shell 脚本和 Maven 调用

  • 构建后操作:邮件通知、归档产物

Freestyle 适合快速验证和学习,但要真正掌握 Jenkins 自动化,Webhook 是关键!下一章咱们就来看看 Git 集成与 Webhook 自动触发,实现代码推送自动构建的效果!


练习题

任务:创建你的第一个 Freestyle 项目

目标:创建一个 Freestyle 项目,从 GitHub 拉取代码并执行 Maven 构建

具体要求

  1. 创建名为 my-first-freestyle 的 Freestyle 项目

  2. 源码管理使用 HTTPS 方式连接 GitHub

  3. 配置轮询 SCM,每15分钟检查一次代码变化

  4. 构建步骤执行 mvn clean package -DskipTests

  5. 归档 target/*.jar 文件

验收标准

  • ✅ 项目创建成功,能看到完整的配置界面

  • ✅ 首次构建能够成功执行(控制台输出 "BUILD SUCCESS")

  • ✅ 构建产物能正常归档,可以在构建历史中下载 jar 包

  • ✅ 配置了轮询 SCM,能自动检测代码变化

验证方式

  1. 手动点击「立即构建」

  2. 查看控制台输出,确认 Maven 构建流程

  3. 访问构建产物的归档链接,确认 jar 包可下载

  4. 修改 GitHub 仓库代码,等待15分钟观察是否自动触发(或者手动再点一次构建)

2. 用 Docker 搭建 Jenkins 环境 2026-05-27
v2rayA Docker 部署手册 — Ubuntu 24 + 1Panel 适配 2026-05-31

评论区