此扩展使您能够将MATLAB®项目作为管道的一部分进行构建和测试。例如,您可以自动识别项目中的任何代码问题,运行测试并生成测试和覆盖工件,并将文件打包到工具箱中。
要使用此扩展运行管道,安装延长件到您的Azure®DevOps组织。要安装扩展,请单击免费获取按钮。您可以将扩展与自托管或Microsoft®托管一起使用代理人:
- 要使用自托管代理,必须使用MATLAB设置计算机作为自托管代理并在Azure Pipelines中注册该代理。代理使用系统路径上最顶层的MATLAB版本来执行管道。
- 要使用Microsoft托管的代理,必须包含安装MATLAB任务,以便在代理上安装首选的MATLAB版本。
示例
当您在名为蓝色管道.yml
在存储库的根目录中,扩展为您提供了四个不同的任务:
运行MATLAB构建
在自托管代理上,运行名为我的任务
,在名为的生成文件中指定构建文件。米
以及它所依赖的所有任务。要运行MATLAB构建,请指定运行MATLAB Build您的管道中的任务。(运行MATLAB BuildMATLAB R2022b及更高版本支持该任务。)
池:myPool步骤:-任务:运行MATLABBuild@1输入:任务:mytask
生成测试和覆盖工件
在Microsoft托管的代理上使用最新版本的MATLAB,在您的MATLAB项目并以PDF和JUnit-style XML格式生成测试结果,以Cobertura XML格式生成代码覆盖率结果。测试运行完成后,将生成的工件发布到Azure Pipelines。要在代理上安装最新版本的MATLAB,请指定安装MATLAB任务。要运行测试并生成工件,请指定运行MATLAB测试任务。
池:vmImage:ubuntu-latest步骤:-任务:安装MATLAB@1-任务:运行MATLAB测试@1输入:testResultsPDF:test-results/results.pdftestResultsJUnit:test-results/results.xmlcodeCoverageCobertura:code-coverage/coverage.xml-任务:PublishBuildArtifacts@1输入:发布路径:test-results/results.pdf-任务:发布测试结果@2条件:succeededOrFailed()输入:testResults文件:test-results/results.xml-任务:PublishCodeCoverage结果@2输入:codeCoverage工具:CoberturasummaryFileLocation:code-coverage/coverage.xml
您可以在管道摘要窗口中访问工件:
- 要下载PDF测试报告,请按照已发布1个链接。
- 要以JUnit-style XML格式查看测试结果,请打开测验选项卡。
- 要以Cobertura XML格式查看代码覆盖率结果,请打开代码覆盖率选项卡。
并行运行测试
使用Microsoft托管代理上所需产品的最新版本并行运行MATLAB和Simulink测试(需要parallel Computing Toolbox™)。要在代理上安装最新版本的MATLAB、Simulink、Simullink Test™和Parallel Computing Toolbox,请指定安装MATLAB任务及其产品
在管道中输入。要并行运行测试,请指定运行MATLAB测试任务及其使用并行
输入指定为真实的
.
池:vmImage:ubuntu-latest步骤:-任务:安装MATLAB@1输入:产品:>Simulink公司同步_测试并行计算工具箱-任务:运行MATLAB测试@1输入:使用并行:true
运行MATLAB脚本
在名为的文件中运行命令我的手稿。米
在Microsoft托管代理上使用MATLAB R2023b在存储库的根目录中。要在代理上安装指定版本的MATLAB,请指定安装MATLAB任务及其释放
在管道中输入。要运行脚本,请指定运行MATLAB命令任务。
池:vmImage:ubuntu-latest步骤:-任务:安装MATLAB@1输入:版本:R2023b-任务:运行MATLAB命令@1输入:命令:myscript
在自托管代理上指定MATLAB版本
当您使用运行MATLAB Build,运行MATLAB测试,或运行MATLAB命令任务,代理使用系统路径上最顶级的MATLAB版本。如果代理在路径上找不到任何MATLAB版本,则任务将失败。
您可以将您首选的MATLAB版本添加到路径
自托管代理的系统环境变量。例如,在路径前加上MATLAB R2020,并使用它来运行脚本。该步骤取决于您的操作系统和MATLAB根文件夹。
池:myPool步骤:-powershell:Write-Host“##vso[task.prependpath]C:\Program Files\MATLAB\R2020 b\bin”#Windows代理#-bash:echo'#vso[task.prependpath]/usr/local/MATLAB/R2020 b/bin'#Linux代理#-bash:echo'##vso[task.prependpath]/Applications/MATLAB_R2020b.app/bin'#macOS代理-任务:运行MATLAB命令@1输入:命令:myscript
使用MATLAB批量授权令牌
在Microsoft托管的代理上,您需要一个MATLAB批量许可令牌如果您的项目是私有的,或者如果您的管道包含转换产品,例如MATLAB Coder™和MATLAB Compiler™。批量许可令牌是使MATLAB能够在非交互式环境中启动的字符串。您可以通过提交MATLAB批量许可试点形式。
要使用MATLAB批量许可令牌:
- 将标记设置为机密变量。有关秘密变量的更多信息,请参阅设置秘密变量.
- 将机密变量映射到名为
MLM_LICENSE_TOKEN(MLM_许可证_确定)
在每个运行MATLAB Build,运行MATLAB测试、和运行MATLAB命令YAML管道的任务。
例如,在Microsoft托管的代理上使用MATLAB的最新版本在您的私人项目中运行测试。要在代理上安装最新版本的MATLAB,请指定安装MATLAB您的管道中的任务。要运行测试,请指定运行MATLAB测试任务。在这个例子中,我的代币
保存批授权令牌的机密变量的名称。
池:vmImage:ubuntu-latest步骤:-任务:安装MATLAB@1-任务:运行MATLAB测试@1环境:MLM_LICENSE_TOKEN:$(myToken)
这个安装MATLAB任务支持Linux®、Windows®和macOS平台。使用矩阵
在所有支持的平台上使用MATLAB构建工具运行构建的作业策略。此管道运行三个作业。
战略:矩阵:linux:图像名称:ubuntu-latest窗户:imageName:windows-latest雨衣:图像名称:macOS-latest池:vmImage:$(imageName)步骤:-任务:安装MATLAB@1-任务:运行MATLABBuild@1输入:任务:测试
任务
您可以使用Azure DevOps中的YAML管道编辑器访问扩展任务。
安装MATLAB
使用安装MATLAB在Microsoft托管的代理上安装MATLAB和其他MathWorks®产品的任务。当您将此任务指定为管道的一部分时,该任务会在Linux、Windows或macOS代理上安装您首选的MATLAB版本(R2021a或更高版本),并将其添加到路径
系统环境变量。如果未指定版本,则任务将安装最新版本的MATLAB。
指定安装MATLABYAML管道中的任务安装MATLAB@1
。该任务接受可选输入。
输入 |
描述 |
释放 |
(可选)要安装的MATLAB版本。您可以指定R2021a或更高版本。默认情况下释放 是最新的 ,对应于MATLAB的最新版本。 例子:版本:R2023b 例子:版本:最新 |
产品 |
(可选)除MATLAB之外要安装的产品,指定为用空格分隔的格式化产品名称列表。您可以指定产品 安装大多数MathWorks产品和支持包。例如,产品:Deep_Learning_Toolbox 除了MATLAB之外,还安装了Deep Learning Toolbox™。 任务使用MATLAB包管理器(英里/分钟 )安装产品。有关支持的产品及其格式化名称的列表,请参阅产品安装选项. 有关如何使用产品 输入,请参见并行运行测试. 例子:产品:Simulink 例子: 产品:Simulink深度学习工具箱 |
许可
您的产品线的产品许可取决于您的项目可见性以及要安装的产品类型:
要使用MATLAB批量许可令牌,首先将其设置为秘密变量。然后,将机密变量映射到名为MLM_LICENSE_TOKEN(MLM_许可证_确定)
在您的YAML管道中。有关示例,请参见使用MATLAB批量授权令牌.
注:这个安装MATLAB任务自动包含MATLAB批许可可执行文件(matlab-batch公司
). 要在不使用此任务的管道中使用MATLAB批授权令牌,必须首先下载可执行文件并将其添加到系统路径。
运行MATLAB Build
使用运行MATLAB Build任务使用MATLAB构建工具运行构建。从R2022b开始,您可以使用此任务运行构建文件中指定的MATLAB构建任务。默认情况下运行MATLAB Build任务查找名为的生成文件构建文件。米
在存储库的根目录中。有关构建工具的更多信息,请参阅MATLAB构建工具概述.
指定运行MATLAB BuildYAML管道中的任务运行MATLABBuild@1
。该任务接受可选输入。
输入 |
描述 |
任务 |
(可选)要运行的MATLAB构建任务,指定为以空格分隔的任务名称列表。如果生成任务接受参数,请将其括在括号中。如果您没有指定任务 ,扩展任务运行生成文件中的默认生成任务以及它们所依赖的所有任务。 如果构建任务运行时没有出现错误,MATLAB将退出,退出代码为0。否则,MATLAB将以非零退出代码终止,这将导致扩展任务失败。 例子: 任务:测试 例子: 任务:编译测试 例子: 任务:检查测试(“myFolder”,OutputDetail=“connective”)存档(“source.zip”) |
构建选项 |
(可选)MATLAB构建选项,指定为以空格分隔的选项列表。该任务支持相同选项你可以传给内置工具 命令。 例子: 构建选项:-continueOnFailure 例子: buildOptions:-continueOnFailure-跳过测试 |
启动选项 |
(可选)MATLAB启动选项,指定为以空格分隔的选项列表。有关启动选项的更多信息,请参阅常用启动选项. 使用此输入指定-批处理 或-第页 选项不受支持。 例子: 启动选项:-nojvm 例子: 启动选项:-nojvm-logfile output.log |
运行MATLAB测试
使用运行MATLAB测试运行使用MATLAB单元测试框架或Simulink测试编写的测试并生成测试和覆盖工件的任务。
默认情况下,任务包括项目中具有测试
标签。如果您的管道不使用MATLAB项目,或者如果它使用R2019a之前的MATLAB版本,那么该任务将包括存储库根目录及其任何子文件夹中的所有测试。如果包含的任何测试失败,则任务将失败。
指定运行MATLAB测试作为运行MATLAB测试@1
。该任务接受可选输入。
输入 |
描述 |
源文件夹 |
(可选)包含源代码的文件夹的位置,指定为相对于项目根文件夹的路径。指定的文件夹及其子文件夹将添加到MATLAB搜索路径的顶部。如果您指定源文件夹 然后生成覆盖率报告,则该任务仅使用指定文件夹及其子文件夹中的源代码来生成报告。可以使用冒号分隔或分号分隔列表指定多个文件夹。 例子: sourceFolder:源 例子: sourceFolder:源/文件夹A;源/文件夹B |
按文件夹选择 |
(可选)用于选择测试套件元素的文件夹的位置,指定为相对于项目根文件夹的路径。要创建测试套件,该任务仅使用指定文件夹及其子文件夹中的测试。可以使用冒号分隔或分号分隔列表指定多个文件夹。 例子: selectByFolder:测试 例子: selectByFolder:test/folderA;测试/文件夹B |
按标签选择 |
(可选)用于选择测试套件元素的测试标记。要创建测试套件,任务仅使用具有指定标记的测试元素。 例子: selectByTag:单位 |
严格的 |
(可选)运行测试时应用严格检查的选项,指定为假 或真实的 。默认情况下,该值为假 。如果指定的值为真实的 ,只要测试发出警告,任务就会生成鉴定失败。 例子: 严格:true |
使用并行 |
(可选)并行运行测试的选项,指定为假 或真实的 。默认情况下,该值为假 测试以串行方式运行。如果测试运行程序配置适合并行化,您可以指定一个值真实的 并行运行测试。此输入需要并行计算工具箱许可证。 例子: 使用并行:true |
输出详细信息 |
(可选)为测试运行显示的事件详细信息量,指定为没有人 ,简明扼要 ,简洁的 ,详细的 ,或冗长的 。默认情况下,任务在详细的 级别和测试运行进度简洁的 级别。 例子: outputDetail:详细 |
日志记录级别 |
(可选)测试运行包含的日志诊断的最大详细级别,指定为没有人 ,简洁 ,简洁的 ,详细的 ,或冗长的 。默认情况下,该任务包括在简洁 级别。 例子: loggingLevel:详细 |
测试结果PDF |
(可选)以PDF格式编写测试结果的位置,指定为相对于项目根文件夹的路径。在macOS平台上,MATLAB R2020及更高版本支持此输入。 例子: testResultsPDF:test-results/results.pdf |
测试结果JUnit |
(可选)以JUnit-style XML格式写入测试结果的位置,指定为相对于项目根文件夹的路径。 例子: testResultsJUnit:test-results/results.xml |
测试结果SimulinkTest |
(可选)以MLDATX格式导出Simulink Test Manager结果的位置,指定为相对于项目根文件夹的路径。此输入需要Simulink测试许可证,并在MATLAB R2019a及更高版本中受支持。 例子: testResultsSimulinkTest:测试结果/结果.mldatx |
代码封面Cobertura |
(可选)以Cobertura XML格式编写代码覆盖率结果的位置,指定为相对于项目根文件夹的路径。 例子: codeCoverageCobertura:code-coverage/coverage.xml |
型号CovertageCobertura |
(可选)以Cobertura XML格式写入模型覆盖率结果的位置,指定为相对于项目根文件夹的路径。此输入需要Simulink Coverage™许可证,并在MATLAB R2018b及更高版本中受支持。 例子: modelCoverageCobertura:model-coverage/coverage.xml |
启动选项 |
(可选)MATLAB启动选项,指定为以空格分隔的选项列表。有关启动选项的更多信息,请参阅常用启动选项. 使用此输入指定-批处理 或-第页 选项不受支持。 例子: 启动选项:-nojvm 例子: 启动选项:-nojvm-logfile output.log |
注:要自定义系统的预测试状态,可以指定在测试运行之前自动执行的启动代码。有关如何在MATLAB项目中指定启动或关闭文件的信息,请参见自动化启动和关闭任务。如果管道未使用MATLAB项目,请在启动。米
文件,并将文件保存到存储库的根目录。请参阅启动
了解更多信息。
运行MATLAB命令
使用运行MATLAB命令运行MATLAB脚本、函数和语句的任务。您可以使用此任务灵活地自定义测试运行或在MATLAB中向管道添加步骤。
指定运行MATLAB命令YAML管道中的任务运行MATLAB命令@1
。该任务需要输入,也接受可选输入。
输入 |
描述 |
命令 |
(必需)要执行的脚本、函数或语句。如果命令 是MATLAB脚本或函数的名称,不要指定文件扩展名。如果指定了多个脚本、函数或语句,请使用逗号或分号分隔它们。 如果指定的脚本、函数或语句成功执行且没有错误,则MATLAB退出,退出代码为0。否则,MATLAB将以非零退出代码终止,这将导致任务失败。若要在某些条件下使任务失败,请使用断言 或错误 功能。 例子: 命令:myscript 例子: 命令:results=runtests,assertSuccess(results); |
启动选项 |
(可选)MATLAB启动选项,指定为以空格分隔的选项列表。有关启动选项的更多信息,请参阅常用启动选项. 使用此输入指定-批处理 或-第页 选项不受支持。 例子: 启动选项:-nojvm 例子: 启动选项:-nojvm-logfile output.log |
使用此任务时,所有必需的文件都必须位于MATLAB搜索路径上。如果脚本或函数不在存储库的根目录中,则可以使用添加路径
,光盘
,或运行
函数将其放在路径上。例如,要运行我的手稿。米
在名为我的文件夹
位于存储库的根目录中,可以指定命令
这样地:
命令:addpath(“myfolder”),myscript
笔记
- 默认情况下,当您使用运行MATLAB构建,运行MATLAB测试,或运行MATLAB命令任务,存储库的根目录用作MATLAB启动文件夹。要使用不同的文件夹运行MATLAB代码,请指定
-标准偏差
启动选项或包含光盘
命令时使用运行MATLAB命令任务。
- 这个运行MATLAB Build任务使用
-批
选项调用内置工具
命令。此外,在MATLAB R2019a及更高版本中运行MATLAB测试和运行MATLAB命令任务使用-批
非交互启动MATLAB的选项。在使用-批处理
选项。要运行需要相同首选项的代码,请使用单个任务。
另请参阅
如果您有任何问题或建议,请联系MathWorkscontinuous-integration@mathworks.com.