小白的Jenkins学习

Jekins

常见名词及概念:
节点

节点(Node) 是执行构建任务的 "工作单元",可以理解为实际运行构建作业的计算资源(物理机、虚拟机、容器等)。它是 Jenkins 实现分布式构建的核心概念,通过将不同任务分配到不同节点执行,可提高构建效率、实现负载均衡,并支持多样化的构建环境。

  1. 内置节点(Built-in Node,默认名为 "master") 这是 Jenkins 服务器本身所在的节点,是安装 Jenkins 时自动创建的默认节点。

    1. 作用:可直接运行构建任务,同时负责管理整个 Jenkins 系统(如调度任务、处理 UI 请求等)。

    2. 注意:在生产环境中,通常不建议将构建任务集中在 master 节点,以免因构建任务消耗过多资源而影响 Jenkins 服务器的稳定性。

  2. 代理节点(Agent Node) 额外配置的、用于分担构建任务的节点(可是远程服务器、虚拟机、Docker 容器等)。

    1. 作用:专门执行构建任务,减轻 master 节点的负担,同时支持不同环境的构建需求(如 Windows 环境构建、特定工具依赖的构建等)。

    2. 特点:需要通过网络与 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使用节点:
  1. 配置节点:在 Jenkins 控制台(Manage JenkinsNodes)中添加代理节点,需指定节点名称、运行环境(如操作系统)、连接方式(如 SSH、JNLP 协议)等。

  2. 绑定任务:在具体构建任务(Job)的配置中,通过 "Restrict where this project can be run" 选项,指定该任务只能在特定节点上执行(例如标记 "Windows 节点" 专门运行 Windows 相关构建)。

  3. 任务调度: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
  • 采用 结构化语法,有固定的层级和关键字(如 pipelineagentstagesstagesteps 等),必须严格遵循格式规范。

语法:

powershell 复制代码
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}
  1. pieline:所有有效的声明式流水线必须包含在一个 pipeline 块中。

  2. agent:定义在哪个节点上执行流水线。agent any表示在任意可用节点上执行。

  3. stages:流水线的核心部分,包含多个阶段(stage)。

  4. stage:定义流水线的一个阶段,每个阶段可以包含多个步骤(steps)。

  5. step:具体的操作步骤,比如构建、测试、部署等。(具体可以使用哪些指令取决于环境以及节点)

  6. environment:定义环境变量。

powershell 复制代码
pipeline {
    agent any
    environment {
        MY_VAR = 'some_value'
    }
    stages {
        stage('Build') {
            steps {
                echo "Building with ${env.MY_VAR}"
            }
        }
    }
}
  1. post:定义流水线结束后的操作,比如清理工作、发送通知等。
powershell 复制代码
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
    }
    post {
        always {
            echo 'This will always run'
        }
    }
}
脚本式 Pipeline
  • 基于 Groovy 脚本语法,更灵活自由,没有固定结构,可直接使用 Groovy 的控制流(如 if-elsefortry-catch 等)。

建议使用声明式pipeline

相关推荐
Leinwin2 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382502 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
qq_417695052 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水2 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
漠北的哈士奇2 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7592 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣3 小时前
智能体选型实战指南
运维·人工智能
yy55273 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
yy我不解释3 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器