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

- 你将被带到项目的配置页面。目前,我们将保持设置不变。滚动到页面底部,点击 Save。
你现在已经创建了一个空的流水线项目。在下一步中,你将创建一个 Jenkinsfile 并配置此项目以使用它。
配置 SCM 使用远程仓库
现在,你将配置你的 Jenkins 项目以从远程 Git 仓库检索其流水线定义。我们将使用一个包含预配置 Jenkinsfile 和示例应用程序的演示仓库。
演示仓库位于:https://github.com/labex-labs/jenkins-demo
让我们看一下我们将在远程仓库中使用的 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 字段中,输入:
https://github.com/labex-labs/jenkins-demo - 在 Script Path 字段中,输入:
introduction-to-pipelines/Jenkinsfile - 点击 Save。

你的项目现已配置为执行远程 GitHub 仓库中定义的流水线。
运行流水线并检查输出
项目配置完成后,是时候运行流水线并查看其运行情况了。
在
my-first-pipeline项目页面上,点击左侧菜单中的 Build Now。将会安排一个新的构建,并显示在左侧的 Build History 面板中。在历史记录下方,Stage View 将显示 "Build" 阶段正在运行,并在完成后变为绿色。

要查看详细输出,请点击 Build History 中的构建编号(例如 #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 会在你构建通过每个阶段时可视化其进度。

点击 Stage View 中的任何一个阶段,即可查看该特定阶段的详细日志。
注意每个阶段是如何按顺序执行的——Jenkins 会等待一个阶段成功完成后再进入下一个阶段。
通过为流水线设置阶段结构,你可以创建清晰且易于维护的工作流程,方便进行监控。每个阶段代表了你的 CI/CD 流程中的一个逻辑阶段,使得识别问题发生的位置和可视化构建进度变得容易。
理解流水线中的环境变量
在最后一步,你将学习环境变量。environment 指令允许你定义可在整个流水线中使用的变量,这非常适合管理配置设置,而无需在步骤中硬编码它们。
远程仓库中的 Jenkinsfile 已经通过一个指定部署目标的变量演示了这一概念。
让我们看看环境变量是如何定义和使用的:
pipeline {
agent any
environment {
DEPLOY_TARGET = 'staging'
}
stages {
// ... other 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 中创建 Pipeline 项目。
- 配置项目以使用远程 Git 仓库(SCM)中的
Jenkinsfile。 - 理解具有多个阶段的声明式流水线(Declarative Pipeline)的结构。
- 运行流水线并检查其控制台输出。
- 观察流水线如何组织成逻辑阶段以实现清晰和条理。
- 理解环境变量的定义和使用方式,以使流水线更具动态性。
这些基础技能对于构建复杂的自动化流水线至关重要。你现在已准备好探索更高级的主题,例如使用参数、管理凭据以及与各种构建和部署工具集成。

