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

相关推荐
聆风吟º14 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
Java后端的Ai之路15 小时前
【Python 教程15】-Python和Web
python
冬奇Lab16 小时前
一天一个开源项目(第15篇):MapToPoster - 用代码将城市地图转换为精美的海报设计
python·开源
较劲男子汉18 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
阿蒙Amon18 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
AI绘画哇哒哒18 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
风流倜傥唐伯虎18 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰18 小时前
[python]-AI大模型
开发语言·人工智能·python
Doro再努力18 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene18 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器