小白的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

相关推荐
青春不败 177-3266-05201 天前
python语言生物信息多组学大数据深度挖掘与论文整理技巧
开发语言·python·生物信息·多组学·高通量测序
以太浮标1 天前
华为eNSP模拟器综合实验之- PPP协议解析及配置案例
运维·网络·华为·信息与通信
雨大王5121 天前
汽车焊接工艺自适应控制技术的系统解析与工业实践
人工智能·python·汽车
540_5401 天前
ADVANCE Day43
人工智能·python·深度学习
小途软件1 天前
基于深度学习的垃圾识别分类研究与实现
人工智能·pytorch·python·深度学习·语言模型
Salt_07281 天前
DAY 58 经典时序预测模型 1
人工智能·python·深度学习·神经网络·机器学习
Every exam must be1 天前
12.2 vue学习02
学习
X_Cosmic1 天前
从零开始:YOLO11 训练 DOTA OBB 遥感数据旋转框目标检测
python·yolo·目标检测
白驹过隙不负青春1 天前
Docker-compose部署java服务及前端服务
java·运维·前端·docker·容器·centos