小白的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 Jenkins → Nodes)中添加代理节点,需指定节点名称、运行环境(如操作系统)、连接方式(如 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
  • 采用 结构化语法,有固定的层级和关键字(如 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...'
            }
        }
    }
}
  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-else、for、try-catch 等)。

建议使用声明式pipeline

相关推荐
像风一样自由20204 小时前
52.Docker部署大模型应用从本地开发到服务化运行
运维·人工智能·docker·容器·大模型·智能体
sxgzzn4 小时前
如何利用电缆故障定位在线监测系统提升供电安全?
运维·重构·无人机·开关柜局放在线监测·gis局放在线监测
mengchanmian5 小时前
VSFTP 服务器搭建(Centos)
运维·服务器·centos
滕州市燕猫虎计算机科技工作室个体工商户5 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
Smoothcloud润云5 小时前
PyTorch大模型权重加载与启动耗时优化实战:定位磁盘、内存与显存瓶颈
人工智能·pytorch·python·深度学习·gpu算力
databook6 小时前
从循环到向量化:NumPy提速的7个关键思维
python·数据分析·numpy
别动我齐刘海6 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
棉猴6 小时前
玩游戏学Python1-Python和pgzero库的安装
python·pygame·玩游戏·pgzero·pgzrun
诺伦7 小时前
GEO优化数据实证:78%引用流向官网的机制拆解与小品牌三步管线实战教程 | RiseClaw玄策
python·seo·geo·内容营销·ai搜索
oooost7 小时前
pytorch学习笔记1
python·学习方法