尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2026最新DevOps从入门到精通教程03:进阶与企业级落地

2026最新DevOps从入门到精通教程03:进阶与企业级落地 文章目录第十章 CI/CD持续集成与持续部署10.1 CI/CD概念10.1.1 什么是持续集成(Continuous Integration,CI)10.1.2 什么是持续交付/持续部署(Continuous Delivery/Deployment,CD)10.2 主流CI/CD工具10.3 GitHub Actions实战10.3.1 核心概念10.3.2 第一个Workflow10.3.3 Docker构建和推送示例10.3.4 部署到服务器示例10.4 GitLab CI10.5 CI/CD最佳实践10.6 CI/CD学习资源第十一章 监控与可观测性11.1 监控、日志、可观测性概念11.2 Prometheus:指标收集11.3 Grafana:可视化11.4 告警:Alertmanager11.5 日志管理:ELK/EFK Stack11.6 监控的黄金信号11.7 监控和可观测性学习资源第十二章 云平台12.1 云服务模型12.2 核心云服务概念计算网络存储数据库身份和访问管理(IAM)12.3 云认证12.4 云学习建议第十三章 软件工程实践13.1 Agile和Scrum13.2 SDLC:软件开发生命周期13.3 自动化测试13.4 工作追踪工具13.5 软件工程实践学习资源第十四章 DevSecOps基础14.1 DevSecOps核心原则14.2 关键安全实践领域14.2.1 代码安全14.2.2 镜像和基础设施安全14.2.3 运行时安全14.2.4 Secrets管理14.2.5 合规和供应链安全14.3 Trivy镜像扫描实操14.4 DevSecOps学习资源第十五章 DevOps推荐经典书籍解读15.1 《The Phoenix Project》(凤凰项目)15.2 《The DevOps Handbook》(DevOps手册)15.3 《Accelerate》(加速)15.4 《Continuous Delivery》(持续交付)15.5 《Site Reliability Engineering》(SRE:Google运维解密)15.6 《Team Topologies》(团队拓扑)15.7 《Effective DevOps》(Effective DevOps中文版)15.8 《Fundamentals of DevOps and Software Delivery》15.9 阅读建议第十六章 DevOps学习路径与职业发展16.1 学习本文回顾16.2 分阶段学习建议16.3 实战项目建议16.4 DevOps工程师的核心能力16.5 持续学习资源推荐第十章 CI/CD持续集成与持续部署这是DevOps最核心的实践之一。CI/CD通过自动化软件交付流程,让团队可以频繁、可靠地交付软件,减少手动错误,加快反馈速度。本文引用了Martin Fowler对持续集成的定义,这是CI概念的权威来源。10.1 CI/CD概念10.1.1 什么是持续集成(Continuous Integration,CI)持续集成是指开发人员频繁地(每天至少一次,甚至多次)将代码合并到主干分支。每次合并都会触发自动化构建和测试,尽早发现集成问题。Martin Fowler在他的经典文章中定义了CI的核心实践:维护一个单一的源代码仓库自动化构建,使构建可以一键完成让构建自检,任何人都可以运行测试每个人每天都向主干提交代码每次提交都在集成机器上构建保持快速构建在生产环境的副本中测试让任何人都能轻松获得最新可执行文件每个人都能看到正在发生什么自动化部署CI解决的问题:“在我机器上能跑啊”——环境一致性问题集成地狱——长时间不合并,合并时大量冲突难以解决问题发现太晚——上线前才发现bug,修复成本高10.1.2 什么是持续交付/持续部署(Continuous Delivery/Deployment,CD)持续交付是在CI的基础上,确保代码随时可以安全地部署到生产环境。每次变更通过自动化流水线验证后,可以一键手动部署到生产。持续部署更进一步,所有通过自动化测试的变更自动部署到生产环境,完全不需要人工干预。两者区别:持续交付:手动点击按钮部署到生产持续部署:全自动部署,不需要人工CI/CD流水线的典型阶段:Source(源码阶段):代码提交到Git仓库,触发流水线Build(构建阶段):编译代码、安装依赖、打包制品Test(测试阶段):运行单元测试、集成测试、静态代码分析Package(制品阶段):构建Docker镜像,推送到镜像仓库Deploy(部署阶段):部署到测试/ staging/生产环境Verify(验证阶段):部署后运行健康检查、冒烟测试Monitor(监控阶段):监控部署后的应用状态10.2 主流CI/CD工具本文列举了多种CI/CD工具:Jenkins、TeamCity、CircleCI、Bamboo、GitLab CI、Azure DevOps、GitHub Actions等。目前最流行的几个选择:GitHub Actions:如果代码在GitHub上,非常方便,配置简单,生态丰富GitLab CI:GitLab内置,不需要单独部署,功能强大Jenkins:老牌开源CI/CD工具,插件生态极其丰富,灵活度高但需要自己维护CircleCI/Travis CI/Bamboo:托管服务或商业产品Argo CD:Kubernetes原生的GitOps持续部署工具作为入门,我们重点学习GitHub Actions和GitLab CI,因为它们配置相对简单,而且本文提供了详细的官方教程链接。10.3 GitHub Actions实战GitHub Actions是GitHub内置的CI/CD功能,你不需要自己搭建服务器,只要在仓库中放一个YAML配置文件就能工作。10.3.1 核心概念Workflow(工作流):你要自动化的整个流程,一个YAML文件对应一个工作流Event(事件):触发工作流的条件,比如push代码、创建PR、定时、手动触发Job(作业):工作流中的一组步骤,默认并行执行Step(步骤):Job中的单个任务,可以是shell命令或ActionAction(动作):可复用的步骤,社区有大量现成的ActionRunner(运行器):执行Job的虚拟机,GitHub提供Ubuntu/Windows/macOS runner10.3.2 第一个Workflow在你的GitHub仓库中创建.github/workflows/ci.yml:# Workflow名称name:CI Pipeline# 触发条件:push或pull request到main分支on:push:branches:[main]pull_request:branches:[main]# 作业jobs:# 作业ID:buildbuild:# 运行环境:最新版Ubunturuns-on:ubuntu-latest# 步骤steps:# 第一步:检出代码(官方Action)-uses:actions/checkout@v4# 第二步:设置Python环境-name:Set up Pythonuses:actions/setup-python@v5with:python-version:'3.11'# 第三步:安装依赖-name:Install dependenciesrun:|python -m pip install --upgrade pip pip install pytest if [ -f requirements.txt ]; then pip install -r requirements.txt; fi# 第四步:运行测试-name:Run testsrun:pytest-v# 第五步:代码检查(可选)-name:Lint with flake8run:|pip install flake8 flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics提交并推送到GitHub后,你可以在仓库的Actions标签页看到流水线运行。每次push或PR都会自动运行,检查代码是否通过测试。10.3.3 Docker构建和推送示例构建Docker镜像并推送到Docker Hub:name:Build and Push Docker Imageon:push:branches:[main]tags:['v*.*.*']# 打tag时也触发jobs:build:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4-name:Log in to Docker Hubuses:docker/login-action@v3with:username:${{secrets.DOCKERHUB_USERNAME}}password:${{secrets.DOCKERHUB_TOKEN}}-name:Build and pushuses:docker/build-push-action@v5with:context:.push:truetags:|myusername/myapp:latest myusername/myapp:${ { github.sha }}Secrets是GitHub仓库中配置的加密变量,不会在日志中泄露。10.3.4 部署到服务器示例通过SSH部署到你的服务器:-name:Deploy to serveruses:appleboy/ssh-action@v1.0.0with:host:${{secrets.SERVER_HOST}}username:${{secrets.SERVER_USER
返回列表