使用持续集成模式开发和集成软件
持续集成 (CI) 的做法是频繁地将代码更改集成到共享存储库中。它通过自动化和标准化活动(如编译代码、测试和打包)来提高团队吞吐量和软件质量。例如,每次开发人员将新提交的更改推送到远程存储库时,持续集成平台都可以自动运行一套测试,以确保这些更改不会在远程存储库的目标分支中引起任何冲突。
持续集成的好处包括:
在软件引入问题后尽快发现和解决这些问题。
添加更多功能,同时减少调试代码所需的资源。
通过持续执行集成,最大限度地降低集成和部署开销。
清楚地传达软件的状态和对它所做的更改。
持续集成工作流
使用持续集成的典型软件开发工作流包括下列几个步骤:
克隆远程存储库并创建功能分支
编辑文件并将更改提交到本地存储库
将提交的更改推送到远程存储库(这会触发一个自动化任务管道,如编译 MEX 文件、运行测试和在 CI 平台上进行工具箱打包)
分析 CI 平台生成的报告并修复管道中的错误
通过取回请求将远程功能分支合并到主分支中(这将触发 CI 平台上的另一个自动化任务管道)
分析 CI 平台生成的报告并解决合并失败问题
下图显示使用 Jenkins® CI 服务器和开源源代码管理工具(如 Git™ 和 GitHub®)的开发周期示例。有关如何将 MATLAB® 与 Jenkins 对接的信息,请参阅在 Jenkins 服务器上运行 MATLAB 测试。
阶段 1:在本地存储库中开发和验证功能
开发一项功能并将您的更改提交到本地存储库:
克隆 GitHub 存储库并创建一个新的功能分支。
根据需要对现有文件进行更改或添加新文件。
运行 MATLAB 和 Simulink® 测试来验证更改并将其提交到本地存储库。
阶段 2:在持续集成平台上运行自动化管道
当您将更改推送到远程存储库或发出取回请求时,运行自动化任务管道(包括测试):
通过将提交的更改推送到 GitHub 或通过发起取回请求来将远程功能分支合并到主分支中,触发 Jenkins 上的自动化任务管道。
Jenkins 运行该自动化管道,包括 MATLAB 和 Simulink 测试,并生成工程配置中指定的工件。
阶段 3:调查和解决失败问题
如果您无法成功推送更改或发起取回请求,请按照以下步骤操作:
检查自动化管道结果和生成的工件。对代码进行适当的更改。
通过将您的更改推送到 GitHub 或发起取回请求,在 Jenkins 上触发新管道。
集成工程师可以使用 Jenkins 工件来决定何时将功能分支合并到主分支中。
与 MathWorks 产品的持续集成
您可以在各种持续集成平台上执行与 MATLAB 的持续集成。您可以运行并测试您的 MATLAB 代码和 Simulink 模型,生成工件,并将结果发布到平台。有关详细信息,请参阅在 CI 平台上与 MATLAB 的持续集成。
除了 MATLAB,各种不同工具箱都支持持续集成工作流。下表列出了模型和代码的常见持续集成用例。
工具箱 | 用例 | 更多信息 |
---|---|---|
Simulink |
| About Source Control with Projects (Simulink) Using a Project with Git (Simulink) 共享 Simulink 缓存文件以加快仿真速度 (Simulink) Attach Model Comparison Report to GitHub Pull Requests (Simulink) |
Simulink Test™ | 使用 Simulink Coverage™ 在 CI 平台上运行测试文件并收集 CI 兼容的覆盖率 | Continuous Integration (Simulink Test) |
Simulink Check™ | 使用 Jenkins 检测模型中的度量阈值违规 | Fix Metric Threshold Violations in a Continuous Integration Systems Workflow (Simulink Check) |
Requirements Toolbox™ | 总结在 CI 平台上运行的测试的需求验证结果 | Include Results from External Sources in Verification Status (Requirements Toolbox) |
Polyspace® Bug Finder™ Server™, Polyspace Code Prover™ Server |
| 持续集成期间在服务器端设置 Bug Finder 分析 (Polyspace Bug Finder) 持续集成期间在服务器端设置 Code Prover 分析 (Polyspace Code Prover) |