Jenkins Pipeline as Code 实践

概述 Pipeline as Code 是 Jenkins 从"拖拽式配置"走向"代码化"的分水岭。把流水线定义写在 Jenkinsfile 中,纳入 Git 版本控制,意味着每次流水线变更都有 diff 可审查、有历史可追溯、有分支可回滚。从 Jenkinsfile 语法到生产级流水线设计,详细梳理 Pipeline as Code 的核心实践。 参考来源:Jenkins Pipeline 官方文档 一、Jenkinsfile 语法 1.1 声明式 vs 脚本式 Jenkins Pipeline 有两种语法风格: 维度 声明式(Declarative) 脚本式(Scripted) 语法 结构化 DSL Groovy 代码 可读性 高,接近配置文件 低,需要 Groovy 知识 灵活性 受限于 DSL 约束 完全自由 输入验证 内置 post、when 等结构 需手动实现 推荐场景 标准流水线、团队协作 复杂逻辑、条件分支多 // === 声明式 Pipeline === pipeline { agent any stages { stage('Build') { steps { sh 'make build' } } } } // === 脚本式 Pipeline === node { stage('Build') { sh 'make build' } } 实践建议:优先用声明式,仅在声明式无法表达的复杂逻辑处用 script {} 块嵌入脚本式代码。...

July 29, 2024 · 14 分钟 · 2916 字 · 徐保金

GitOps 工作流:ArgoCD 实践

GitOps 核心原则 GitOps 是一种现代化的持续交付方法论,由 Weaveworks 在 2017 年提出。它将 Git 作为基础设施和应用配置的唯一可信源(Single Source of Truth),通过声明式方式实现持续部署。 根据 ArgoCD 官方文档,GitOps 遵循四大核心原则: 1. 声明式系统 基础设施和应用配置以声明式描述(YAML/Helm/Kustomize)存储在 Git 中: # Git 仓库结构示例 infra-repo/ ├── apps/ │ ├── frontend/ │ │ ├── deployment.yaml │ │ ├── service.yaml │ │ └── configmap.yaml │ └── backend/ │ ├── deployment.yaml │ └── service.yaml ├── helm/ │ └── values-production.yaml └── kustomize/ ├── base/ └── overlays/ ├── staging/ └── production/ 声明式描述的核心价值:配置即文档,Git 历史即审计日志。任何环境变更都可追溯、可回滚。 2. 版本控制 所有变更通过 Git 提交记录,天然具备:...

July 22, 2024 · 6 分钟 · 1125 字 · 徐保金

CI/CD 流水线设计:GitHub Actions 实战

CI/CD 是现代软件交付的命脉。手动构建、手动部署不仅效率低下,更是事故的温床——“在我机器上能跑"的悲剧几乎都源于缺乏自动化流水线。GitHub Actions 作为 GitHub 原生的 CI/CD 平台,与代码仓库无缝集成,免费额度对开源项目友好,已成为最流行的 CI/CD 工具之一。从核心概念出发,结合 Go 项目和 Hugo 站点两个实战场景,完整讲解流水线设计。 参考来源:GitHub Actions 官方文档 一、GitHub Actions 核心概念 GitHub Actions 的架构围绕五个概念展开,理解它们的关系是设计流水线的基础: Workflow(工作流) │ ├── Job A(任务) │ ├── Step 1 → Action: checkout 代码 │ ├── Step 2 → Action: setup Go 环境 │ └── Step 3 → Shell: go test ./... │ └── Job B(任务) ├── Step 1 → Action: 下载构建产物 └── Step 2 → Shell: 部署到服务器 概念 说明 类比 Workflow 一个 ....

March 7, 2024 · 8 分钟 · 1580 字 · 徐保金