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'
            }
        }
    }
}
相关推荐
程序员JerrySUN1 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛1 小时前
Linux文件理解,基础IO理解
linux·运维·服务器
angushine1 小时前
鲲鹏服务器logstash采集nginx日志
运维·服务器·nginx
睿思达DBA_WGX1 小时前
由于主库切换归档路径导致的 Oracle DG 无法同步问题的解决过程
运维·数据库·oracle
XXYBMOOO2 小时前
Xilinx-FPGA-PCIe-XDMA 驱动内核兼容性问题修复方案
linux·运维·服务器
会飞的青蛙2 小时前
从购买服务器,到Ubuntu + Docker + Jenkins 部署,再到网页展示!
nginx·ci/cd·jenkins
爱学习的狮王3 小时前
window10和ubuntu22.04双系统之卸载ubuntu系统
linux·运维·ubuntu
Deutsch.5 小时前
负载均衡Haproxy
运维·负载均衡·haproxy
不做无法实现的梦~5 小时前
mid360连接机载电脑,远程桌面连接不上的情况
运维·服务器·电脑
运维成长记5 小时前
关于linux运维 出现高频的模块认知
运维·职场和发展·云计算