简介
欢迎来到 Jenkins 流水线基础实验。Jenkins 流水线(Pipeline)是一项强大的功能,允许你将整个构建、测试和部署过程定义为代码。这种定义存储在一个名为 Jenkinsfile 的文本文件中,通常与应用程序的源代码一起进行版本控制。这种实践被称为「流水线即代码」(Pipeline-as-Code)。
在本实验中,你将重点学习声明式流水线(Declarative Pipeline)语法,它提供了一种结构化且用户友好的方式来创建流水线。通过本实验,你将能够:
- 在 Jenkins Web 界面中创建一个新的流水线项目。
- 使用声明式语法编写基础的
Jenkinsfile。 - 配置项目以使用来自本地 Git 仓库的
Jenkinsfile。 - 运行流水线并检查其输出。
- 将流水线组织为多个阶段(Stage)。
- 使用环境变量来管理配置。
一个 Jenkins 实例已经在容器中为你运行。让我们开始吧。
在 Jenkins 中创建流水线项目
第一步是在 Jenkins 中创建一个新的流水线项目。这种项目类型专门用于执行在 Jenkinsfile 中定义的流水线。
- 从桌面界面打开 Firefox 浏览器。浏览器会自动打开
http://localhost:8080,因此无需手动输入 URL。无需登录。 - 在 Jenkins 仪表板上,点击左侧菜单中的 New Item(新建任务)。
- 在 Enter an item name(输入任务名称)字段中,输入
my-first-pipeline。 - 从项目类型列表中选择 Pipeline。
- 点击页面底部的 OK 按钮。

- 你将被带到项目的配置页面。目前,保持设置不变。滚动到页面底部并点击 Save(保存)。
你现在已经创建了一个空的流水线项目。在下一步中,你将创建一个 Jenkinsfile 并配置此项目来使用它。
配置 SCM 以使用本地 Git 仓库
现在,你将配置 Jenkins 项目,使其从 Jenkins 容器内托管的本地 Git 仓库中获取流水线定义。这使得实验独立于外部网络,同时仍然使用真实的「来自 SCM 的流水线脚本」(Pipeline script from SCM)工作流。
演示仓库位于:git://localhost/pipeline-demo.git
让我们检查一下 Jenkins 将从该仓库加载的 Jenkinsfile:
pipeline {
agent any
environment {
DEPLOY_TARGET = 'staging'
}
stages {
stage('Build') {
steps {
echo 'Building the application...'
sh 'echo "Compiling source code..."'
}
}
stage('Test') {
steps {
echo 'Testing the application...'
sh 'echo "Running unit tests..."'
}
}
stage('Deploy') {
steps {
echo "Deploying the application to ${env.DEPLOY_TARGET}..."
sh 'echo "Application deployed successfully!"'
}
}
}
}
这个声明式流水线脚本包含了多个阶段,并展示了关键概念:
pipeline { ... }:定义整个流水线的主块。agent any:指示 Jenkins 在任何可用的代理上运行此流水线。environment { ... }:定义可在整个流水线中使用的环境变量。stages { ... }:流水线中所有阶段的容器。stage('...') { ... }:定义特定的阶段。阶段有助于可视化工作流。steps { ... }:包含在阶段中执行的实际命令。echo '...':将消息打印到构建日志的步骤。sh '...':执行 Shell 命令的步骤。
现在,配置你的 Jenkins 项目以使用此仓库:
- 返回浏览器中的 Jenkins UI,导航到
my-first-pipeline项目页面。 - 点击左侧菜单中的 Configure(配置)。
- 向下滚动到 Pipeline 部分。
- 将 Definition(定义)下拉菜单从 "Pipeline script" 更改为 Pipeline script from SCM。
- 在出现的 SCM 下拉菜单中,选择 Git。
- 在 Repository URL(仓库 URL)字段中,输入:
git://localhost/pipeline-demo.git - 在 Script Path(脚本路径)字段中,输入:
Jenkinsfile - 点击 Save(保存)。

你的项目现在已设置为执行本地 Git 仓库中定义的流水线。
运行流水线并检查输出
项目配置完成后,是时候运行流水线并查看其实际效果了。
在
my-first-pipeline项目页面上,点击左侧菜单中的 Build Now(立即构建)。一个新的构建将被调度,并出现在左侧的 Build History(构建历史)面板中。在历史记录下方,Stage View(阶段视图)将显示 "Build" 阶段正在运行,并在完成后变为绿色。

要查看详细输出,请点击构建历史中的构建编号(例如 #1)。
在构建的摘要页面上,点击左侧菜单中的 Console Output(控制台输出)。

滚动查看日志。你将找到来自流水线步骤的消息,确认流水线已成功执行。
...
[Pipeline] { (Build)
[Pipeline] echo
Building the application...
[Pipeline] sh
+ echo Compiling source code...
Compiling source code...
[Pipeline] } // stage
[Pipeline] { (Test)
[Pipeline] echo
Testing the application...
[Pipeline] sh
+ echo Running unit tests...
Running unit tests...
[Pipeline] } // stage
[Pipeline] { (Deploy)
[Pipeline] echo
Deploying the application to staging...
[Pipeline] sh
+ echo Application deployed successfully!
Application deployed successfully!
[Pipeline] } // stage
...
Finished: SUCCESS
你已经成功运行了第一个流水线并验证了其输出。请注意流水线是如何自动执行仓库 Jenkinsfile 中定义的全部三个阶段(Build、Test、Deploy)的。
理解流水线中的多个阶段
现实世界中的流水线由多个阶段组成,例如构建、测试和部署应用程序。本地仓库中的 Jenkinsfile 已经包含了这些不同的阶段,展示了这个重要的概念。
让我们检查一下流水线是如何通过多个阶段构建的:
stages {
stage('Build') {
steps {
echo 'Building the application...'
sh 'echo "Compiling source code..."'
}
}
stage('Test') {
steps {
echo 'Testing the application...'
sh 'echo "Running unit tests..."'
}
}
stage('Deploy') {
steps {
echo "Deploying the application to ${env.DEPLOY_TARGET}..."
sh 'echo "Application deployed successfully!"'
}
}
}
回到
my-first-pipeline项目的 Jenkins UI,如果尚未运行,请点击 Build Now 再次运行流水线。观察项目仪表板上的 Stage View。你将看到代表 "Build"、"Test" 和 "Deploy" 阶段的三列。Jenkins 会在构建通过每个阶段时可视化其进度。

点击阶段视图中的任何阶段,查看该特定阶段的详细日志。
注意每个阶段是如何按顺序执行的——Jenkins 会等待一个阶段成功完成后,才会进入下一个阶段。
通过使用阶段来组织流水线,你可以创建一个清晰且易于维护的工作流,便于监控。每个阶段代表 CI/CD 过程中的一个逻辑环节,这使得识别问题发生的位置以及可视化构建进度变得非常容易。
理解流水线中的环境变量
在最后一步中,你将学习环境变量。environment 指令允许你定义可在整个流水线中使用的变量,这非常适合在不将配置硬编码到步骤中的情况下管理配置设置。
本地仓库中的 Jenkinsfile 已经通过一个指定部署目标的环境变量演示了这个概念。
让我们检查一下环境变量是如何定义和使用的:
pipeline {
agent any
environment {
DEPLOY_TARGET = 'staging'
}
stages {
// ... 其他阶段 ...
stage('Deploy') {
steps {
echo "Deploying the application to ${env.DEPLOY_TARGET}..."
sh 'echo "Application deployed successfully!"'
}
}
}
}
关于 Jenkins 流水线中环境变量的关键点:
environment { ... }块定义了在整个流水线中可用的变量。- 变量使用
${env.VARIABLE_NAME}语法进行访问。 - 对于包含变量插值的字符串,务必使用双引号 (
"),因为 Groovy 的变量插值仅在双引号字符串中有效。 - 环境变量使你的流水线更加灵活且易于维护。
如果尚未操作,请通过点击 Build Now 在 Jenkins 中触发一次新的构建。
构建完成后,检查该构建的 Console Output。在 "Deploy" 阶段的日志中,你将看到变量已被正确替换:
...
[Pipeline] { (Deploy)
[Pipeline] echo
Deploying the application to staging...
[Pipeline] sh
+ echo Application deployed successfully!
Application deployed successfully!
[Pipeline] } // stage
...
Finished: SUCCESS
- 注意
DEPLOY_TARGET环境变量的值staging是如何自动替换到 echo 语句中的。
环境变量对于创建灵活的流水线至关重要,这些流水线可以轻松配置用于不同的环境(开发、测试、生产),而无需修改流水线代码本身。
总结
恭喜!你已成功完成了 Jenkins 流水线入门实验。你已经学习了将 CI/CD 工作流定义为代码的核心概念。
在本实验中,你练习了如何:
- 在 Jenkins UI 中创建流水线项目。
- 配置项目以使用托管在 Jenkins 本地 Git 仓库中的
Jenkinsfile。 - 理解包含多个阶段的声明式流水线结构。
- 运行流水线并检查其控制台输出。
- 观察流水线如何组织为逻辑阶段以实现清晰度和组织性。
- 理解如何定义和使用环境变量以使流水线更具动态性。
这些基础技能对于构建复杂的自动化流水线至关重要。你现在已经准备好探索更高级的主题,例如使用参数、管理凭据以及与各种构建和部署工具集成。

