CI/CD,Devops,平台工程 概述与应用

CI/CD,Devops,平台工程### CI/CD,Devops,平台工程

CI/CD 概述

** CI/CD(Continuous Integration/Continuous Delivery 或 Continuous Deployment)**是现代软件开发和交付流程中的核心概念,旨在加速代码变更的交付,同时保证代码的质量和稳定性。它结合了开发、测试、部署等过程,实现了软件的自动化和持续迭代。

CI/CD是实现敏捷开发Devops理念的一种方法,具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试,到交付和部署)。这些关联的事务通常被统称为CI/CD 管道(Pipeline),由开发(RD)、测试(QA)、运维(OP)团队以敏捷方式协同支持.

以上所有过程在目前的工作中都有有到,只是很多几个技术集成了一个工具上,比如云引擎工具中监控使用到了prometheus,构建部署使用到了docker,k8s,maven。jenkins本身内部有封装的实现平台。版本控制工具有gitlab,PM工具有内部实现。

平台工程概述

平台工程(Platform Engineering) 是一种通过提供内部开发者平台(Internal Developer Platform,IDP)来提高开发和运维效率 的工程方法。它旨在为开发团队创建自助式工具和服务,使他们能够专注于构建和交付高质量的软件,而无需过多关注底层基础设施或繁琐的操作细节。

平台工程的核心目标
  1. 开发者体验优化
    提供统一、便捷的工具和接口,使开发人员能够轻松完成代码部署、环境管理和性能监控等任务。
  2. 效率提升
    通过自动化和标准化减少手动操作和重复劳动,加快交付速度。
  3. 降低复杂性
    将复杂的基础设施和工具抽象化,让开发者无需直接与底层资源交互。
  4. 增强一致性
    确保不同团队和项目使用一致的开发、测试、部署流程,减少因环境差异导致的问题。
平台工程与传统 DevOps 的区别
特性 DevOps 平台工程
目标 建立文化和实践,提高协作效率。 提供具体工具和服务,提升开发者体验。
关注点 流程和文化的改进。 技术和平台的实现与优化。
实现方式 自定义、团队间协作。 提供统一的、自助式平台。
开发者参与度 开发者需要掌握更多运维知识。 开发者聚焦于业务逻辑,底层由平台支持。
流水线(pipeline)

jenkins pipeline https://www.cnblogs.com/hiyong/p/15890284.html

流水的触发可以通过定时任务触发也可以通过某一事件触发【git某分支上有代码提交】

个人理解CI的很大一部分工作是讲一系列的过程自动化地完成,目前系统中经历过的比较有代表性的实践是:

自动化发布版本

整个过程做的事情是通过maven打包构建新的包体,然后讲该包上传到docker仓库得到一个包的镜像地址,然后再手动进行部署【更加自动化的流程是部署也参与到流水线中,主要代码提交到某个分支,自动构建新版本并进行部署】


自动化入库流程

整个过程涉及到CI服务器,版本控制服务器,应用服务器。 相比于直接在应用服务器上完成所有的操作,达到了解耦的效果,当新增一种资源入库时,只需要修改流水线脚本,而不怎么需要应用服务器代码【修改代价比较大】

![](https://i-blog.csdnimg.cn/img_convert/cee8f71ab7315395d2baa79091fe8011.png

json 复制代码
pipeline pipeline {
    agent any
    stages {
        stage('Example Build') {
            steps {
                echo 'Hello World'
            }
        }
        
        stage('Deploy1') {
            when {
                branch 'production1'
            }
            steps {
                echo 'Deploying1'
            }
        }
        
        stage('Deploy2') {
            when {
                allOf {
                    branch 'production2'
                    environment name: 'DEPLOY_TO', value: 'production2'
                }
            }
            steps {
                echo 'Deploying2'
            }
        }
        
        stage('Deploy3') {
            when {
                beforeInput true
                branch 'production3'
            }
            input {
                message "Deploy to production3?"
                id "simple-input"
            }
            steps {
                echo 'Deploying3'
            }
        }
    }
}
相关推荐
2501_941982059 小时前
别再手动发群消息了!企业微信外部群自动化推送的架构设计与实现
运维·自动化·企业微信
REDcker9 小时前
埋点系统设计:从成熟工具到自建方案
运维·服务器·网络·用户分析·埋点·埋点系统
先做个垃圾出来………9 小时前
SSH密钥管理最佳实践
运维·ssh
RisunJan9 小时前
Linux命令-lpr(从命令行提交文件到打印机打印)
linux·运维·服务器
历程里程碑9 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Wpa.wk9 小时前
接口自动化 - 接口鉴权处理常用方法
java·运维·测试工具·自动化·接口自动化
70asunflower9 小时前
用Docker创建不同的容器类型
运维·docker·容器
2501_933670799 小时前
中专学财务,2026年就业方向全解析:从出纳到财务BP的进阶路
运维·服务器
Dovis(誓平步青云)10 小时前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
迎仔10 小时前
05-计算设备运维进阶:算力中心的设备医生
运维