1.什么是CI/CD
“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
”CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。
2.CI(持续集成=提交代码后-自动合并-自动测试)
没有持续集成的情况下,各个开发在自己的IDE上开发,到最后的一天大家一起合并到一起,称为合并日。就会导致当日工作量剧增,各种问题频出。因此工作繁琐。
当有持续集成的情况下,各个开发开发完毕后,已提交。便能够自动集成到某个分支或者主干上。同时当有新的代码集成过来后,会自动完成基本测试内容(一般是单元测试和集成测试)。来验证这些更改,确保这些更改没有对现有的分支及主的应用造成破坏。 。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。3.CI(持续交付)
持续交付是持续集成的扩展,指的是将通过自动化测试的软件部署到产品环境。持续交付的本质是把每个构建成功的应用更新交付给用户使用。在持续交付的世界里,我们对完成的定义不是测试完成,而是交付到客户手中。这里需要注意的是,CD代表持续交付(Continuous Delivery)而不是持续部署(Continuous Deploy),因为部署也包括部署到测试环境,而持续交付代表的是功能的上线,交付给用户使用。
持续交付的目标是拥有一个可随时部署到生产环境的代码库。 也就是持续给出一个产品,提供到给测试5.CD(持续部署)
作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。 持续部署的目标就是将产品自动化的部署到生产环境,而且这种部署是持续的,多次的。这需要很多的自动化工具及设计来配合。
二、企业开发流程架构解析
plan:首先有立项,一个需求———jira
- code:开发编写代码————————-IDE
- build:编写好的代码进行构建———- Maven
- test:构建完成后由测试进行测试——-单元测试-集成测试、安全测试等等
- release:发布
- deploy:部署
- operate:运营
- monitor:监控
企业开发流程:
用户—->反馈——>整理文档——>需求——->backlog(代办清单,优先级设置)——->发布迭代计划
开发编码——>提交到代码仓库——>持续集成——>持续发布
常用技术栈:
整体技术栈:
必备技术栈:
git—-maven——jenkins——ansible—-docker——k8s——elk——promethous