CI/CD 是一种行之有效的软件开发教条。互联网上充满了谈论 CI/CD 的文章和页面。它们始终具有相同的CI/CD映像。我打赌你知道我正在谈论的图像。
我阅读了数十篇有关该主题的文章,并体验了端到端 CI/CD 管道的实施。现实情况是,实施CI/CD 管道远比阅读文章、了解 CI/CD 整体情况和使用理论复杂得多。 CI/CD 管道开发需要跨学科且经验丰富的团队。
好的文章介绍一下该怎样营造 Python 运用执行程序的最短是可以 CI 热力管道。您是可以调整好的文章项目以满足各种语言表达和的标准。该举例采用 FastAPI 和 GitHub Actions。
GitHub 例子: ://github.com/joan-mido-qa/continuous-integration-example
CI:持续集成
我会在现阶段的不断地集成型式表述中加上我的几点想法。不断地集成型式是指死期将智能测验、提出申请和可交楼的代码怎么用变更合为到产品贮存库文件。
此例子运用自动式对每一家“拉取重定向”或“推荐到主”新闻事件完成所要的体检,以确认代码是什么符合规定要求存贮库质标准化。行业提拱了多种五颜六色的 CI/CD 手段: 、 、 、GitLab 等。考虑最适宜您的线路规定要求的一种。
实例操作操作流程进行检查新代碼是否能够尊循自动运行制式游戏规则。而后,它在使用实行大型测试软件测试软件,接下来在 D 集体上布置采用小程序实行大中型测试软件测试软件。
您的将持续集成化工作任务方案将决定于于您的团对数量、熟透度、使用软件标准和层次结构营销策略。
静态代码分析
研究二维码重设而不执行程序它们的。空态研究设备查检您的二维码要不要遵照经营模式规责,不的使用已弃用或丢失的依懒项,但是够了可读且十分简单。他俩还建议大家表明制作程序语言表达方式制作反经营模式和报错。
你们将解说怎么组装、调试和加载预上传。您不错将预上传与其它概述方式(诸如或构建看起来。
预提交
是一个个用Python编程的生产工具。要在随意调节冷库中系统配置它,如同加入 YAML 文件资料资料并增添要在一段时间审核前一天程序运行的版本的化挂扣相似简洁。预审核会系统会自动经营钩子需用的信任项并系统会自动修复手机发现了的错识。它支持软件许多文件资料资料结构类型:JSON、YAML、tf、py、ts 等。
在远程更新源编号怎么用刚刚,进行在当地开机程序运行源编号怎么用定期检查报告来避免浪费基本知识体系成本低。您应该在 CI 上开机程序运行预在线提交来定期检查报告远程更新源编号怎么用的格式文件。
进行安装、增加和运动预上传手段:
repos: - repo: //github.com/pre-commit/pre-commit-hooks rev: v2.3.0 hooks: - id: check-yaml - id: end-of-file-fixer - id: trailing-whitespace
$ pip install pre-commit $ pre-commit install $ pre-commit run --all-files
Python 钩子提案:
- Mypy: Python 的静态类型检查器
- Ruff: Python 的静态格式检查器
- Refurb:建议 Python 编码最佳实践
- Commitizen:确保标准提交使用和版本管理
测试
机组、集合和端到端测试方法的确定和领域时而是乳状液的。然而我对坚持集合详情所做的那样的话,我将中放入我的2分钱:
小:快速测试。测试小段代码。使用测试替身或模拟环境(例如 SQLite)。不需要构建任何工件。时间:~ 60 秒。
Medium :测试多段代码之间的交互。它们可能包括构建工件、使用第三方工件(例如数据库)以及连接到本地主机网络。使用伪造的环境(例如 docker-compose、Kind、Minikube 等)或外部服务(例如 Azure Blob Storage 或 AWS S3)。时间:~ 300 秒。
大型:他们使用类似生产的环境(例如性能测试)。时间:+ 900 秒。
对长期集合水管展开或不展开巨型/巨型测试软件依赖于于您的追求。
小的
该举例选择的 Pytest 运营测评图片,并选择的 FastAPI 测评图片业主端来摸拟学习环境。不会有秘诀;您的程序流程编程话述测评图片工具软件应该是为您给出测评图片技术软件包流程需求的其它依赖于项。
不仅如此,您需要获取低些测式扩大面率查看并将其作结杲的一部电影分上传照片。测式扩大面率都是个难缠的指標。高测式扩大面率并不一味着成为經過充分测式的二维码,但 50% 的测式扩大面率比 0% 的测式二维码好点。
中等的
D 就是一个 docker-in-docker 轻频度 Kubernetes 集群服务器,采用本地网定制开发或 CI。我们公司选用 Kind 来设有检查软件周围环境并对其运作检查软件:
- 创建 Kind 集群
- 构建 Docker 镜像
- 将 Docker 镜像加载到 Kind
- 安装 MetalLB 并应用所需的 CDR
- 安装 Ingress-Nginx
- 安装你的 Helm Chart
- 设置您的操作系统主机
加载 Docker 镜像
Kind 将没办法下載您的图片,所以它没办法从备案表下載。 Kind 特殊要求在食用开始之前弹出图片。
金属LB
是个裸机 Kubernetes 根据均衡性教育器。在网站页面上阅渎想关为是什么需根据均衡性教育器的很多资料。
实用 Helm Chart 布置后,公司能够 开启需提交的 CRD:
--- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: kind-advertisement --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: kind-address-pool spec: addresses: - "172.26.255.0/24"
Docker 为 Kind 集群式建立的子网(举个例子 172.26.0.0/16)。排查 Kind 微信网络接口方式以介绍重新分配的 IP 地止区间并将该地止用来 IPAddressPool 影视资源的值。关于 MetalLB 显卡配置的较多的信息是在页面上。
公开应用程序
安装 Ingress-Nginx Helm Chart。然后,安装应用程序 Helm Chart,定义 Ingress 对象。将 ingressClassName 属性设置为 nginx 并定义一个主机(例如 api.local)。最后,修改/etc/host以添加以下行:
192.168.1.10 api.local
您可能表明要求概念指定数目的设备主机,指在同个地址查询。 Nginx 将做完凑够的事业。
采用的 Kind 開發一家生产工具来启动的、不断更新和清空网上生态。開發人群是可以采用的它高效调试编译程序用编译程序、在网上初现报告模板的脚本错误或在 CI 上运转测验。
此范例应在立于 Linux 的发行量版。对 Windows/MacOS 几率是没办法按原样行驶,几率要有对其进行改成。
送货
在交给需要备考的工件表面的时候,工作中流会施行 linting 和测试软件步骤之一。
小编适用来的管理铸件的发布公告。 Commtizen 自动化自动刷新铸件旧版并发送调整。它适用配资的元素贴论文格式组建一位新的 git 元素贴。您还也可以配资 Commtizen 以适用新调整自动刷新您的变化记录。
[tool.commitizen] tag_format = "v$major.$minor.$patch" version_scheme = "semver" version_provider = "pep621" major_version_zero = true update_changelog_on_bump = true version_files = [ "charts/ci-example/Chart.yaml:version", "charts/ci-example/Chart.yaml:appVersion" ]
该工作的操作流程动用 Commitizen 输出精度型号来配置 Docker Image 和 Helm Chart 标签纸。
您是可以为一个钢件表面(画面和数据表格)开发管理不一的微信旧版本。是您的数据表格和画面改变必要向后兼容。它将曾加开发管理和发布信息具体步骤的复杂化性。要想杜绝这现状,.我对5个钢件表面使用的完全相同的微信旧版本。
结论
本诗阐述一个多个单纯但经济实用的持续时间一体化工做方法。它有可能可以改变就要不适适用的java开发文学语言或符合您的耍求,但某种步驟想必更能排除并按原样工做。
CI/CD 实训:长期推进 [第 2 要素] 陆续退出......