你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
许可证说明
Azure Batch C# 客户端现在使用 MIT 许可证。 在 2017 年 3 月 10 日之前,它已使用 Apache 2.0 许可证。
Azure Batch SDK 开发人员指南
Microsoft.Azure.Batch.sln
是与 Azure Batch C# 客户端库相关的一站式服务。 此解决方案文件包含与 Azure Batch 客户端 (关联的所有项目,包括测试和工具) 。
更改Azure Batch客户端
根据要做出的更改类型,所需的工作会有所不同。 如果遵循此过程,则不应错过任何内容:
- 更新 Azure Batch Swagger 规范,该规范驻留在 Azure/azure-rest-api-specs GitHub 存储库 (此处专门)
- 将新的实体类型添加到 Swagger 规范中。
- 在 Swagger 规范中添加新 API 作为路径-谓词对。
- 在 Swagger 规范中对现有实体类型添加/删除属性。
- 使用以下步骤重新
src\GeneratedProtocol
生成文件夹。 - 更新位于 中的
Tools\ObjectModelCodeGenerator\Spec
相应便利层规范文件 () 。- 添加与 Swagger 定义的实体匹配的新实体。
- 添加/删除现有实体的属性,如 Swagger 规范中所做的那样。
- 确保文档已正确更新,以反映 Swagger 规范中所做的更改, (它通常有助于查看有关 API 版本的 Swagger 差异) 。
src\Generated
使用以下步骤从便利层规范文件重新生成文件夹。- 将对象
partial
上Generated
的任何自定义代码添加到目录中的类中src
。- 可能需要执行此操作以添加
[Obsolete]
属性或添加一些帮助程序工厂方法。
- 可能需要执行此操作以添加
- 如果任何 API 已更改,或者已添加新 API,则必须更新以下位置:
src\IProtocolLayer.cs
接口。src\ProtocolLayer.cs
类。- 相应的操作类,例如
PoolOperations.cs
。 - 对其执行操作的相应实体,例如
CloudPool.cs
。
- 将新模型和 API 的测试添加到正确的测试项目中。
Azure.Batch.Unit.Tests
单元测试。 这些测试没有任何外部依赖项, (它们完全在内存中运行) ,并在持续集成作业中用于验证签入。BatchClientIntegrationTests
用于集成测试。 这些测试针对实时Azure Batch终结点运行,并且不会在 CI 期间运行。 有关如何 运行这些测试 的更多详细信息,请参阅运行端到端测试。- 注意: 在可能的情况下,应首选添加单元测试而不是集成测试 -- 应保留集成测试以确保 Batch 服务接受 Swagger 请求。 测试服务行为应在服务测试中发生,而不是在客户端中发生。
- 更新 中的
CHANGELOG.md
src/Microsoft.Azure.Batch.csproj
文件和Version
标记。 确保如果要进行重大更改,请更新版本号的主版本。 - 运行测试并确保它们通过。
- 将 PR 打开到 https://github.com/Azure/azure-sdk-for-net
src\GeneratedProtocol
使用 AutoRest 生成文件夹
GeneratedProtocol 文件夹包含 AutoRest 工具从 Swagger 规范生成的代码。 AutoRest 工具具有自己的命令行接口,可以直接使用,也可以运行 powershell Start-AutoRestCodeGeneration -ResourceProvider "batch/data-plane" -SdkRepoRootPath "<path to root of this repo>" -AutoRestVersion "latest" -SdkGenerationDirectory "<path to root of this repo>\sdk\batch\Microsoft.Azure.Batch\src\GeneratedProtocol" -ConfigFileTag "package-2020-03.11.0"
src\Generated
生成文件夹
此文件夹包含用于Azure Batch的便利层模型。 它是从自定义工具生成的。 自定义工具读取 位于 中的所有 Tools\ObjectModelCodeGenerator\Spec
规范文件。 便利层模型需要的元数据比 Swagger 规范提供的元数据多,因此此文件是 Swagger 之上的额外映射层,可提供更多详细信息。 注意: 这些规范文件都与模型有关,它们与实际 API 无关。
- 此外,必须在此处添加 Swagger 规范中定义的新实体。 有关示例,请参阅现有实体。
- 如果属性的类型或名称在基础 Swagger 规范中已更改,则应在此处进行更新。
有许多特殊标志在规范文件中具有意义。 查看支持的标志列表以及支持级别的最简单方法是查看支持代码生成代码:
- 对于属性:
Tools\ObjectModelCodeGeneration\CodeGenerationLibrary\PropertyData.cs
- 对于类型:
Tools\ObjectModelCodeGeneration\CodeGenerationLibrary\ObjectModelTypeData.cs
添加并更新在 Visual Studio 中 Tools\ObjectModelCodeGenerator\Spec
将 标记为 ObjectModelCodeGenerator
启动项目并运行中的所需文件后,它将重新生成文件夹的内容 src\Generated
。
运行端到端测试
完整的端到端测试通过需要 20-40 分钟。 必须设置以下环境变量才能使端到端测试正常工作 - 建议设置一个脚本来设置所有这些变量,以便以后可以轻松重复使用:
MABOM_BatchAccountEndpoint
:Batch 帐户的终结点,即https://<account>.<region>.batch.azure.com
MABOM_BatchAccountSubscriptionId
:Batch 和存储帐户的订阅 ID。 请注意,存储帐户和 Batch 帐户需要位于同一订阅中。MABOM_BatchAccountResourceGroupName
:Batch 帐户所属的资源组。MABOM_BatchAccountName
:Batch 帐户的名称。MABOM_BatchAccountKey
:Batch 帐户的密钥。MABOM_StorageAccountResourceGroupName
:存储帐户的资源组的名称。MABOM_StorageAccount
:存储帐户的名称。MABOM_StorageKey
:存储帐户的密钥。MABOM_BlobEndpoint
:存储帐户的 Blob 终结点,即https://<account>.blob.core.windows.net
MABOM_BatchManagementEndpoint
:目标租户的管理终结点。 这通常是https://management.azure.com/
。
如果针对测试租户运行测试,还必须设置:
MABOM_BatchTRPExtraHeaders
to x-ms-version=2015-12-01;x-ms-client-tenant-id=microsoft.onmicrosoft.comMABOM_BatchTRPCertificateThumbprint
:用于通过 Batch 资源提供程序进行身份验证的指纹。