Jenkins的流程

发布时间:2026/7/23 13:52:08
Jenkins的流程 目录一、Jenkins 是干什么的二、怎么使用三、它在团队里的位置四、Jenkins 常见完整流程端到端五、Jenkins流程总图六、创建一个简单的Pipelin一、Jenkins 是干什么的Jenkins 的核心作用是把重复的“构建、测试、部署”流程自动化。人推代码 → Jenkins 自动执行约定好的步骤 → 告诉你成功还是失败。典型作用代码提交后自动编译、跑测试打包成 jar / 镜像 / 安装包自动部署到测试环境定时巡检、发通知邮件、企微等把一整套发布流程固化成可重复执行的流水线二、怎么使用1. 创建任务Job / Item点「新建 Item」常见几种类型适合做什么Freestyle简单命令入门最快Pipeline用代码写流水线推荐长期用Multibranch Pipeline多个 Git 分支各自自动构建2. 配置触发方式手动点 Build点一下就跑SCM 轮询 / Webhook代码一推就自动跑最常用定时触发比如每天凌晨构建3. 写执行步骤Freestyle直接写 Shell例如echo 开始构建 mvn clean packagePipeline项目里放 Jenkinsfile例如pipeline { agent any stages { stage(Build) { steps { sh mvn clean package } } stage(Test) { steps { sh mvn test } } } }4. 看结果蓝色/绿色成功红色失败点进构建日志排查每次构建都有历史记录方便回看“谁、何时、改了什么导致失败”5. 扩展能力插件Jenkins 本身只是调度器真正能力靠插件例如Git / GitHub / GitLabMaven / Node / Docker或以后 Podman钉钉/邮件通知凭据管理账号密码、Token三、它在团队里的位置开发写代码 → Git 仓库 → Jenkins 自动构建测试 → 产物/部署 → 测试或上线开发少手工打包问题更早发现测试每次构建结果可复现运维发布步骤标准化降低人为失误后面如果用 Ansible通常是Jenkins 负责“什么时候跑”Ansible 负责“到服务器上具体怎么部署”。四、Jenkins 常见完整流程端到端最常见的完整链路是代码提交→ 触发 Jenkins→ 拉代码→ 构建→ 测试→ 质量检查可选→ 打包/打镜像→ 推送制品库→ 部署测试/预发/生产→ 健康检查与通知→ 归档与回滚能力0. 事前准备通常只做一次这些不是每次构建都做但没有它们流水线跑不起来安装 Jenkins、必要插件Git、Pipeline、Credentials、Docker 等配置工具链JDK、Maven、Node、kubectl、Docker/Podman配置凭据Git Token、镜像仓库、SSH 私钥、Kubeconfig准备 Agent本机 built-in或独立构建机项目中放入Jenkinsfile或在 Job 里写脚本1. 开发提交代码开发者把代码推到 GitGitLab/GitHub/Gitee 等git push origin feature/xxx # 或合并到 main/develop这是整条流水线的起点。2. 触发 Jenkins常见触发方式方式说明常见场景Webhook仓库推送后立刻通知 Jenkins最推荐轮询 SCMJenkins 定时问仓库有无变更简单但有延迟手动 Build Now人点构建调试、紧急发布定时 cron每天/每周跑夜间全量、巡检上游任务触发A 成功后再跑 B多项目联动触发后会生成一次构建如#128。3. 初始化与拉代码流水线启动后通常先做分配执行节点agent any/ 指定 label清理或准备工作空间git checkout对应分支/commit注入环境变量构建号、commit、分支名结果Jenkins 工作目录里有一份可复现的代码快照。4. 构建Build把源码变成可运行产物Javamvn clean package/gradle build前端npm ci npm run buildGogo build多模块按顺序或并行编译产出示例target/app.jardist/静态文件失败则流水线变红后续部署通常不再执行。5. 测试Test常见分层单元测试快每次必跑集成测试依赖数据库/中间件可在测试环境跑接口/UI 测试可选更慢常放后续阶段测试失败 → 构建失败 → 通知开发。这是 CI 的核心价值尽早发现坏提交。6. 质量检查可选但常见代码扫描SonarQube依赖漏洞扫描镜像漏洞扫描若已有镜像单测覆盖率门禁不达标则失败作用不只“能编译”还要求“质量过线”。7. 打包 / 打镜像传统包jar/war、zip、安装包命名带版本app-1.4.0-b128.jar容器镜像现在很常见docker build -t registry/app:1.4.0-b128 .标签通常包含语义版本Git commit 短 SHAJenkins 构建号8. 推送制品库把产物存到统一仓库供部署拉取产物去哪jar/包Nexus / Artifactory / 通用 OSS镜像Harbor / ACR / Docker Hub好处部署环境不依赖 Jenkins 工作空间同一产物可部署到多套环境便于回滚仍保留旧版本9. 部署Deploy按环境分层是完整流程里最关键的分支点开发/测试环境dev/test → 常自动部署预发staging → 常自动或轻量审批生产prod → 常人工审批后再部署1部署到 K8s改镜像 tag → kubectl/helm apply → 等待滚动更新就绪2部署到 ECS传包或 pull 镜像 → 停旧 → 替换 → 启动 → 探活可用 SSH 脚本或 Ansible。10. 健康检查与验证部署后自动验证HTTP 探活/health/actuator/healthK8s等 Pod Ready冒烟测试登录、关键接口抽查查看错误日志是否暴增不通过 → 流水线失败并尽量自动回滚。11. 通知与归档通知成功/失败发邮件、钉钉、企微、Slack内容含项目、分支、commit、构建人、日志链接归档保存测试报告、产物地址、镜像 tag构建历史可追溯“线上这个版本对应哪次构建”12. 回滚完整流程的保险常见策略K8skubectl rollout undo/ 重发旧镜像 tagECS切回上一版 jar 软链或旧镜像并重启制品库保留 N 个历史版本理想状态回滚也是流水线里的一键/自动步骤而不是纯手工慌乱操作。五、Jenkins流程总图开发推代码│▼Webhook 触发 Jenkins│▼拉代码 → 构建 → 测试 → 质量门禁│▼打包 / 打镜像 → 推制品库│├─► 自动部署到测试环境 → 探活 → 通知│└─►审批部署到生产 → 探活 → 通知│└─失败则回滚阶段常见情况触发后的构建/测试/打包/推送自动部署到测试环境多为自动部署到生产常人工审批后自动执行首次搭 Jenkins、写流水线、配凭证手动失败后改代码/修环境手动回滚可自动也可人工点流水线对应到 Pipeline 阶段示例pipeline { agent any stages { stage(Checkout) { steps { checkout scm } } stage(Build) { steps { sh mvn -B clean package } } stage(Test) { steps { sh mvn -B test } } stage(Package) { steps { sh docker build -t app:$BUILD_NUMBER . } } stage(Push) { steps { sh docker push registry/app:$BUILD_NUMBER } } stage(Deploy Test) { steps { sh ./deploy.sh test $BUILD_NUMBER } } stage(Approve Prod) { steps { input 确认发布生产 } // 人工 } stage(Deploy Prod) { steps { sh ./deploy.sh prod $BUILD_NUMBER } } stage(Health Check) { steps { sh ./healthcheck.sh prod } } } post { success { echo 通知成功 } failure { echo 通知失败必要时回滚 } } }六、创建一个简单的Pipeline第一步新建 Pipeline 任务打开 http://localhost:8080要确保jenkins服务启动点左侧新建 Item名称填hello-pipeline名字可随意选择Pipeline点确定第二步粘贴流水线脚本在配置页往下找到 Pipeline 区域Definition选Pipeline script先不连 Git最简单在 Script 框里粘贴pipeline { agent any stages { stage(准备) { steps { echo 开始执行流水线 sh whoami sh pwd sh date } } stage(构建) { steps { echo 模拟构建... sh mkdir -p dist echo hello jenkins dist/app.txt sh cat dist/app.txt } } stage(测试) { steps { echo 模拟测试... sh test -f dist/app.txt echo 测试通过 } } } post { success { echo 全部成功 } failure { echo 有阶段失败请看控制台日志 } } }点页面底部保存代码解释部分含义agent any在任意可用节点执行你现在就是本机stages流水线分阶段准备 → 构建 → 测试steps每个阶段里真正执行的命令sh ...在 Linux/WSL 里跑 Shellpost成功/失败后的收尾动作第三步执行并看结果点左侧 立即构建Build Now左下「构建历史」会出现#1点进#1→ 控制台输出Console Output成功时会看到类似开始执行流水线hello jenkins测试通过Finished: SUCCESS第四步模拟失败案例把构建阶段改成故意失败观察红色失败日志sh exit 1保存后再点立即构建对比成功和失败的控制台差异。