用途
deploy-pipeline 用于为 Power Pages 解决方案触发一次 Power Platform Pipeline 部署运行。它读取已有的流水线配置,选择目标阶段,校验解决方案包,然后将其部署到目标环境。
主要能力
- 从 docs/alm/last-pipeline.json 读取现有流水线配置。
- 选择目标阶段(如 Staging、Production)。
- 校验解决方案包。
- 可选地配置部署设置。
- 将解决方案部署到目标环境并监控部署过程。
- 写入部署记录。
- 支持多解决方案模式:schemaVersion 为 3 时按 deploymentOrder[] 顺序对同一阶段逐个解决方案串行部署;schemaVersion 为 2(旧版)时回退到遍历多个 deploymentpipelines 记录的行为。
使用方式
前置条件:
- 先运行 /power-pages:setup-pipeline 创建流水线配置。
- 源(开发)环境必须已配置 Power Platform Pipelines 主机环境。该配置在 Power Platform Admin Center(Environments → 选择环境 → Pipelines)中设置,或通过租户级 DefaultCustomPipelinesHostEnvForTenant 设置完成。缺少该配置时 pac pipeline deploy 会失败。
- docs/alm/last-pipeline.json 存在(由 setup-pipeline 创建)。
- .solution-manifest.json 存在。
- Azure CLI 已登录(az account show 成功)。
- PAC CLI 已登录(pac env who 成功)。
技能执行的主要阶段:
- Phase 0 — ALM 计划门禁:当用户表达 ALM 意图(promote / ship / deploy / move to staging / push to prod / release this version)时,应先运行编排器 /power-pages:plan-alm。若本技能作为活跃的 plan-alm 编排的一部分被调用,则跳过 Phase 0。门禁通过 check-alm-plan.js 判断计划是否存在、是否过期,并据此提示用户运行 plan-alm、继续或取消。
- Phase 1 — 校验前置条件:解析项目配置的环境 URL,断言 PAC 实际连接的环境与之匹配,读取项目上下文与解决方案清单,定位 docs/alm/last-pipeline.json,进行清单版本检查,获取主机环境令牌。
- Phase 1.5 — 基于当前 Pipelines 部署文档进行核对:通过 microsoft_docs_search 与 microsoft_docs_fetch 获取 Microsoft Learn 关于阶段运行生命周期、校验结果、审批门禁工作流与 deploymentsettingsjson 覆盖的说明,与参考文件比对并提示差异。该步骤限时约 30 秒,离线时记录一行说明后继续。
- Phase 2 — 选择目标阶段:若用户以参数传入阶段名或环境标签则直接匹配;否则通过 AskUserQuestion 询问部署到哪个环境。
- 后续阶段包括:创建阶段运行并校验包(Phase 3.6 在多解决方案模式下并行校验)、获取部署说明、配置部署设置、每次迭代触发最终确认门禁、部署并监控、写入部署记录。
部署循环为串行设计:当 DEPLOYMENT_ORDER 有 N 个条目时,按顺序一次部署一个解决方案,首次失败即停止。原因包括目标环境的 Dataverse 导入锁、拆分策略中的跨拆分依赖、每次迭代的确认门禁,以及清晰的失败处理。校验阶段(Phase 3.6)是并行的,因为 ValidatePackageAsync 不占用导入锁;部署阶段则有意保持串行。
适用场景
- 将 Power Pages 解决方案从开发环境提升到 Staging 或 Production 等目标阶段。
- 在已配置 Power Platform Pipelines 主机环境的项目中执行 ALM 部署。
- 多解决方案项目按 deploymentOrder 顺序部署。
限制
- 必须先运行 /power-pages:setup-pipeline 创建流水线配置。
- 源环境必须已配置 Power Platform Pipelines 主机环境,否则 pac pipeline deploy 会失败。
- 需要 docs/alm/last-pipeline.json、.solution-manifest.json 存在,且 Azure CLI 与 PAC CLI 已登录。
- 直接调用本技能会绕过编排器的预计划完整性检查、按阶段的环境变量解析、激活步骤与校验运行。
- 部署阶段为串行,不应通过 Promise.all / Promise.allSettled / await Promise.race 并行化。
- 关于收费、价格、平台支持范围等更多信息,资料中暂未提供。