用途:在 CI 中注册 Azure ML 代码资产,并通过 ADF 编排训练、评分、模型注册或部署,确保运行时使用实际注册的资产版本。
主要能力与要点:CI 负责代码资产注册并发布 SDK 返回的 result.version;ADF 通过显式契约(通常是存储指针 blob)获取版本,而非运行时发现 AML 代码版本;SDK 返回结果是唯一可信来源,请求版本、构建 ID、分支名或提交派生字符串均不可作为依据。私有存储需同时具备正确 RBAC 与可证明的数据平面可达性;ADF WebActivity 网络须经目标集成运行时实测,不能只校验 JSON。
使用方式:优先用 Python SDK 注册代码资产,示例:ml_client._code.create_or_update(Code(name=code_name, version=requested_version, path=staged_code_path)),并读取 result.version。CI 输出变量示例:print("##vso[task.setvariable variable=trainingCodeVersion;isOutput=true]{result.version}")。ADF 用 WebActivity 读取指针 blob,认证用 MSI,resource 为 https://storage.azure.com/,且 connectVia 必须放在 typeProperties 内。私有存储的托管 CI 代理需临时添加防火墙规则,示例:az storage account network-rule add --resource-group $rg --account-name $storageAccount --action Allow --ip-address $agentIp --only-show-errors,并在 always() 清理步骤中移除。依赖需固定,例如:python -m pip install --upgrade "azure-ai-ml==1.24.0" "azure-identity==1.19.0" "marshmallow>=3.18,<4.0"。
适用场景:Azure ML 与 ADF 的生产自动化、CI 注册与 ADF 编排、私有存储与托管代理环境。
限制:资料未提供具体收费、价格、平台支持范围或效果数据;所有建议须以运行时行为验证,不能仅凭文档、模板编译或代码审查通过。