Jekins
常见名词及概念:
节点
节点(Node) 是执行构建任务的 "工作单元",可以理解为实际运行构建作业的计算资源(物理机、虚拟机、容器等)。它是 Jenkins 实现分布式构建的核心概念,通过将不同任务分配到不同节点执行,可提高构建效率、实现负载均衡,并支持多样化的构建环境。
-
内置节点(
Built-in Node,默认名为 "master") 这是 Jenkins 服务器本身所在的节点,是安装 Jenkins 时自动创建的默认节点。-
作用:可直接运行构建任务,同时负责管理整个 Jenkins 系统(如调度任务、处理 UI 请求等)。
-
注意:在生产环境中,通常不建议将构建任务集中在
master节点,以免因构建任务消耗过多资源而影响 Jenkins 服务器的稳定性。
-
-
代理节点(
Agent Node) 额外配置的、用于分担构建任务的节点(可是远程服务器、虚拟机、Docker 容器等)。-
作用:专门执行构建任务,减轻
master节点的负担,同时支持不同环境的构建需求(如 Windows 环境构建、特定工具依赖的构建等)。 -
特点:需要通过网络与
master节点通信,由master节点统一调度任务。
-
构建
构建(Build) 是指按照预设流程自动执行一系列操作的过程,通常用于代码编译、测试、打包、部署等软件开发环节。它是 Jenkins 的核心功能,也是实现持续集成(CI)和持续部署(CD)的基础。
WebHook
WebHook(网络钩子) 是一种通过 HTTP 协议实现的 "实时通知机制",允许一个应用程序在特定事件发生时,自动向另一个应用程序发送请求(通常是 HTTP POST 请求),传递事件相关的数据。
Cron表达式
Cron 表达式是一种用于定义定时任务执行时间的字符串格式,广泛应用于 Unix/Linux 系统的定时任务工具(如cron)、Jenkins、Quartz 等调度框架中,用于精确指定 "任务在何时执行"。
常用插件:
-
Git Plugin:用于拉取 Git 仓库代码
-
GitHub Integration Plugin(若用 GitHub)或 GitLab Plugin:增强代码仓库与 Jenkins 的集成
Jenkins使用节点:
-
配置节点:在 Jenkins 控制台(
Manage Jenkins→Nodes)中添加代理节点,需指定节点名称、运行环境(如操作系统)、连接方式(如 SSH、JNLP 协议)等。 -
绑定任务:在具体构建任务(
Job)的配置中,通过 "Restrict where this project can be run" 选项,指定该任务只能在特定节点上执行(例如标记 "Windows 节点" 专门运行 Windows 相关构建)。 -
任务调度:master 节点会根据节点的空闲状态、标签(Label)匹配度等,自动将任务分配到合适的节点执行。
Jenkins实现代码提交后的自动构建:
方法一(WebHook):
当代码提交到GitHub/GitLab时,触发设置好的WebHook,向Jenkins发送一个Http请求(也叫回调),Jenkins接收到请求后触发构建 方法二(轮询):
Jenkins 按设定的时间间隔(如每 5 分钟)检查代码仓库是否有变更,若有则触发构建,勾选Poll SCM,在日程表中填写 cron 表达式来控制检查时间
Jenkins实现不同任务的构建(Pipeline流水线)
Pipeline支持两种语法: Declarative Pipeline(声明式pipeline,在pipeline2.5中引入,结构化方式)和Scripted Pipeline(脚本式pipeline),两者都支持建立连续输送的Pipeline。
声明式 Pipeline
- 采用 结构化语法,有固定的层级和关键字(如
pipeline、agent、stages、stage、steps等),必须严格遵循格式规范。
语法:
powershell
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
-
pieline:所有有效的声明式流水线必须包含在一个pipeline块中。 -
agent:定义在哪个节点上执行流水线。agent any表示在任意可用节点上执行。 -
stages:流水线的核心部分,包含多个阶段(stage)。 -
stage:定义流水线的一个阶段,每个阶段可以包含多个步骤(steps)。 -
step:具体的操作步骤,比如构建、测试、部署等。(具体可以使用哪些指令取决于环境以及节点) -
environment:定义环境变量。
powershell
pipeline {
agent any
environment {
MY_VAR = 'some_value'
}
stages {
stage('Build') {
steps {
echo "Building with ${env.MY_VAR}"
}
}
}
}
post:定义流水线结束后的操作,比如清理工作、发送通知等。
powershell
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
}
post {
always {
echo 'This will always run'
}
}
}
脚本式 Pipeline
- 基于 Groovy 脚本语法,更灵活自由,没有固定结构,可直接使用 Groovy 的控制流(如
if-else、for、try-catch等)。
建议使用声明式pipeline