开发者学堂课程【云原生实践公开课:CI/CD pipeline 集成的最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/698/detail/12271
CI/CD pipeline 集成的最佳实践
内容介绍:
一、云原生DevOps概述
二、Jenkins on K8s
三、Jenkins Pipeline
四、Jenkins CI实践
一、云原生DevOps概述
为什么需要DevOps?
与传统IT方式相比,减少80%的成本
提高效率,快速迭代
1、唯快不破--业务应用快速上线;研发效能提升
2、稳中求变--既要满足业务的“稳态”又要满足快捷商业的“敏态”需求
3、节省资源--自动扩缩容;开发运维一体化;云原生架构
4、开拓创新--既要满足业务的“稳态”又要满足快捷商业的“敏态”需求。
云原生 DevOps 一充分利用与原生技术的优势:
1、弹性∶
自动弹性伸缩资源按需分配
2、高可用∶
环境一致性多副本自治
3、敏捷:
容器技术微服务架构
资源按需分配:资源动态创建动态销毁
更快速迭代:自动触发、减少人工误差、降低迭代成本、加快迭代频率
快速部署:自动化部署,提高部署效率
高可用性:应用多副本,保障业务高可用性
低成本:资源的高利用率降低了硬件成本;自动化方式降低了人力成本
环境一致性:应用容器化,保证应用再开发测试和生产环境中的一致性
自动伸缩:基于应用负载自动扩容缩容,保证业务的连续性
多租户:容器平台的多租户特性可以满足多项目组同时开发
持续集成/交付:
1、持续集成:
持续构建
持续测试
代码分析
持续反馈
2、持续交付:
容器镜像发布
应用部署
3、优势:
发现和处理bug更快
所有操作对用户透明
自动化构建
更短的构建周期
通知反馈机制
持续部署
二、Jenkins on K8s
Jenkins 安装部署和配置
- 一键部署Jenkins Helm Chart
- 动态Slave Pod模板配置
- 配置容器镜像仓库访问权限
- 配置Maven缓存
- 配置构建任务
三、Jenkins Pipeline
Jenkins Pipeline —Jenkinsfile
构建节点设置
全局环境变量设置
Git拉取
Maven 构建
Kaniko 容器镜像构建
Kubectl 部署应用
例如:
包括JAVA源码、gitignore、Dockerfile、Jenkinsfile、
application-demo.yaml、deployment.yaml、pom.xml 等
四、Jenkins CI实践
使 Jenkins 完成应用构建和部署实践
创建新的任务 cicd-pipeline
选择流水线类型
做构建参数设置
做构建:
构建日志完全是按照jenkins-demo / Dockerfile去定义的:
1、拉取源码
2、做构建
3、根据 Dockerfile 去构建目标镜像
4、把镜像推送到镜像仓库里面
5、部署到容器环境里面