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'
            }
        }
    }
}
相关推荐
努力的小T9 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
枫叶落雨22210 小时前
08-Elasticsearch
运维·jenkins
爆更小小刘11 小时前
Linux下基本指令(4)
linux·运维·服务器
我码玄黄11 小时前
解决本地模拟IP的DHCP冲突问题
linux·运维
若云止水12 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_init 函数
运维·nginx
Self-Discipline12 小时前
Linux arm64 IOMMU总结
linux·运维·服务器
我言秋日胜春朝★12 小时前
【Linux】命名管道------Linux进程间通信的桥梁
linux·运维·服务器
Dontla12 小时前
华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)
运维·服务器·chrome
wenchun00112 小时前
【并发压测】高并发下Linux流量监控
linux·运维·服务器
从后端到QT12 小时前
ubuntu磁盘清理垃圾文件
linux·运维·ubuntu