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

相关推荐
了一梨13 小时前
SQLite3学习笔记4:打开和关闭数据库 + 创建表(C API)
数据库·学习·sqlite
阿蒙Amon18 小时前
TypeScript学习-第1章:入门
javascript·学习·typescript
Hgfdsaqwr18 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
开发者小天18 小时前
python中For Loop的用法
java·服务器·python
绾樘18 小时前
RHCE--基于Nginx的Web服务器配置
运维·服务器·nginx
老百姓懂点AI19 小时前
[RAG实战] 向量数据库选型与优化:智能体来了(西南总部)AI agent指挥官的长短期记忆架构设计
python
打工的小王19 小时前
docker(三)具体项目的部署
运维·docker·容器
A9better20 小时前
嵌入式开发学习日志50——任务调度与状态
stm32·嵌入式硬件·学习
非凡ghost21 小时前
ESET NupDown Tools 数据库下载工具
学习·软件需求
喵手21 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列