Jenkins 从 0 到 1 学习笔记

一、Jenkins 是什么

Jenkins 是一个开源的持续集成(CI)/ 持续交付(CD) 工具。核心作用是把"构建、测试、打包、部署"这些重复工作自动化,当你提交代码或按计划触发时自动执行流水线。

核心概念

  • Job(任务):一次要执行的构建工作,是 Jenkins 的最小单元
  • Pipeline(流水线):把多个步骤串成一条自动化流程,Jenkins 2.x 的后核心玩法
  • Node(节点/Agent):实际执行任务的机器(可以是本机 Master 或远程机器)
  • Master(主节点):负责调度、管理界面,也可以执行任务
  • Workspace(工作区):每次构建时拉取代码、存放构建产物的目录

二、安装与启动

1. 环境要求

  • Java 8+(推荐 11 或 17)
  • 内存至少 2GB+(推荐 4GB)
  • 支持 Windows / macOS / Linux / Docker

2. 常用安装方式

方式一:直接下载 war 包(最直观)

复制代码
wget https://get.jenkins.io/war-stable/latest/jenkins.war
java -jar jenkins.war --httpPort=8080

方式二:Docker(推荐,干净)

复制代码
docker run -d -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  --name jenkins jenkins/jenkins:lts

方式三:原生包(Linux)

复制代码
sudo apt install jenkins   # Debian/Ubuntu
sudo systemctl restart jenkins

3. 初始化步骤

  1. 访问 http://localhost:8080
  2. 从日志或文件 /var/lib/jenkins/secrets/initialAdminPassword 获取初始密码
  3. 创建管理员账号
  4. 安装推荐插件(Install Suggested Plugins)
  5. 设置实例 URL

三、核心界面与配置

1. 系统管理(Manage Jenkins)

  • 系统配置:全局环境变量、JDK/Git/Maven 等工具路径、邮件通知
  • 插件管理:安装 / 更新 / 卸载插件
  • 凭据(Credentials):存 Git 密码、SSH Key、Token 等敏感信息,供构建时使用
  • 节点管理:添加和管理执行节点

2. 凭据添加(重点,别把密码写死到脚本里)

凭据类型常见有:

  • Username with password:Git 用户名密码
  • SSH Username with private key:SSH 登录
  • Secret text:Token / API Key

Manage Jenkins → Credentials → Global → Add Credentials 中添加。


四、构建 Job 的两种主流方式

方式一:Freestyle Project(自由风格任务,入门友好)

界面点选配置,适合简单场景:

  • 源码管理:填 Git 仓库 + 凭据
  • 构建触发器:定时(cron)、轮询 SCM、或钩子触发
  • 构建步骤:可选 Execute shell / Windows batch、调用 Maven 等

方式二:Pipeline(流水线,现代主流,推荐学习方向)

用代码(Jenkinsfile)定义整个流程,可版本化、可复用,是 CI/CD 的方向。


五、Pipeline 核心语法

Jenkinsfile 支持两种语法:

1. Declarative Pipeline(声明式,推荐入门)

复制代码
pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                echo 'git clone...'
                checkout scm
            }
        }
        stage('构建') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('测试') {
            steps {
                sh 'mvn test'
            }
        }
        stage('部署') {
            steps {
                echo 'deploy to server'
            }
        }
    }
}

2. Scripted Pipeline(脚本式)

更灵活但复杂,用 node {} 包裹:

复制代码
node {
    stage('构建') {
        sh 'mvn clean package'
    }
}

常用指令速查

指令 作用 示例
agent 指定在哪执行 agent { label 'slave1' }
stages/stage 阶段划分 stage('Build')
steps 具体步骤 sh 'ls'
environment 环境变量 environment { FOO = 'bar' }
when 条件执行 when { branch 'main' }
post 无论成败都执行的分支 post { always { ... } }
parameters 参数化构建 parameters { string(name:'BRANCH') }
credentials 引用凭据 credentials('my-cred')

六、常用插件(按需装)

  • Git:源码管理(默认)
  • Pipeline:流水线支持(默认)
  • Blue Ocean:更友好的可视化流水线界面
  • Credentials / Credentials Binding:凭据管理
  • Email Extension:构建结果邮件通知
  • Gitee / GitLab:国内 Git 平台集成,可用 Webhook 触发
  • Docker Pipeline:在流水线中调用 Docker
  • Publish Over SSH:构建产物发布到远程服务器

七、Webhook 自动触发(CI 的"自动"来源)

让 Git 平台在代码提交时主动通知 Jenkins:

  1. Jenkins 侧装好对应的 Git 插件(如 Gitee/GitHub)
  2. 在 Job 配置中添加触发方式:"Gitee webhook 触发构建"
  3. 在 Job 设置里生成一个 Webhook URL 和 Secret Token
  4. 到代码仓库平台配置 Webhook,URL 填 Jenkins 地址,保存
  5. 之后每次 push 代码,Jenkins 自动开始构建

八、定时构建(cron 语法)

在触发器里用 cron 表达式:

复制代码
# 每天凌晨 2 点
H 2 * * *
# 每 30 分钟
H/30 * * * *
# 周一到周五每天 9 点
H 9 * * 1-5

H 表示"哈希",用于错开负载。


九、完整学习路线建议

  1. 入门:装好 Jenkins → 手动创建一个 Freestyle Job → 学会查构建日志、定位失败
  2. 上道:掌握 Git 关联 + Webhook 自动触发 + 邮件通知
  3. 进阶:把所有 Job 迁移成 Pipeline + Jenkinsfile,实现 CI 全流程
  4. 深入:多节点分布式构建、凭据体系规范化、参数化构建、与 Docker/K8s 结合
  5. 生产:集成代码质量管理(SonarQube)、制品仓库(Nexus)、CD 自动化部署

十、常见坑与建议

  • 环境变量别硬编码:密码、Token 一律走 Credentials
  • 日志是救命稻草:构建失败先看 Console Output 尾部
  • 定时任务 :大型构建避免集中在同一时刻,用 H 错峰
  • Keep workspace:排查问题时可保留工作区,别每次清空
  • 版本升级 :升级前先做 /var/lib/jenkins 备份(老坑)
  • 学习 Jenkinsfile 语法:直接用 UI 里的 "Pipeline Syntax" 生成器帮你生成代码,减少手写错误

需要我进一步展开某一部分吗?比如写一份完整的 Jenkinsfile(含参数化、多阶段、部署)范例 ,或者Blue Ocean 可视化操作与 Gitee/GitLab 完整对接的实战步骤?

相关推荐
不会代码的小猴1 小时前
2. 了解Qt
开发语言·c++·笔记·qt·算法
hsjiasb9 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
小弥儿10 小时前
GitHub今日热榜 | 2026-08-16:大模型微调与编码工具扎堆
学习·开源·github
2501_9269783311 小时前
AGI 的四种瓶颈:资源型还是发现型--以及DSH的位置
人工智能·经验分享·笔记·ai写作
liuqs33212 小时前
nat123安卓和nat123全端口选型指南,映射工具怎么挑
网络·笔记
xian_wwq12 小时前
【学习笔记】光伏“四可”装置纵密模块--配置方法和原理
笔记·学习
min(a,b)13 小时前
学习第17天:Agent Memory 与 MCP 协议
python·学习
lifallen13 小时前
模型不是函数:claude-cookbooks/misc 十四篇的公共底层
人工智能·学习·ai·ai编程
lucky_syq15 小时前
第5篇 · S1·下:前沿架构:MoE、Reasoning 模型、长上下文、多模态、SSM/Mamba 与模型谱系
人工智能·学习·架构