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'
            }
        }
    }
}
相关推荐
爱和冰阔落1 分钟前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
Decay__4 分钟前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
我是koten6 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
修己xj14 小时前
服务器无法解析域名?一次 DNS 配置缺失的排查与修复
运维
xbzb19 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮19 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
逐流人20 小时前
手工建集群到全自动发布:k8s集群部署与DevOps流水线整合实战
ci/cd·云原生·kubernetes·云计算·devops
瑞克-桑切斯20 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风21 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字32221 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted