如何在Azure App Service上部署微前端monorepo并配置release pipeline
仅变更MFE触发对应构建的配置
你可以直接在每个MFE对应的独立流水线yaml中配置路径触发规则,实现只有对应目录下的代码变更时才启动当前流水线构建:
# mfe1-pipeline.yml 示例触发器配置 trigger: branches: include: - main # 替换为你实际的主干分支名称 paths: include: - packages/mfe1/* # 仅当前MFE目录变更时才触发构建 exclude: - packages/* # 排除其他目录变更的干扰
每个MFE的构建流水线完成后,统一添加发布构件任务,给每个MFE的构件设置独立可识别的名称,方便后续发布流水线读取:
# 构建任务完成后添加如下配置,以mfe1为例 - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.SourcesDirectory)/packages/mfe1/dist' # 替换为你实际的构建产物输出路径 ArtifactName: 'mfe1-dist' publishLocation: 'Container'
Release Pipeline读取各MFE构件的配置
初期项目规模小,推荐用多构件源的方案,配置门槛最低:
- 进入Release Pipeline的配置页,在「构件」板块依次添加所有MFE的构建流水线作为独立构件源,给每个构件源设置和MFE对应的别名,比如
mfe1-src、container-src - 每个构件源都打开「持续部署触发」开关,这样任意一个MFE构建完成都会自动触发发布流程
- 部署阶段中,通过Azure DevOps预定义变量即可访问到对应构件的本地路径,示例路径为:
$(System.DefaultWorkingDirectory)/mfe1-src/mfe1-dist,直接读取该路径下的静态文件部署到Azure App Service即可 - 可以给每个MFE的部署任务添加执行条件,仅当对应MFE的构建触发了本次发布时才执行部署,未变更的MFE部署任务直接跳过,示例条件配置为:
eq(variables['RELEASE.TRIGGERINGARTIFACT.ALIAS'], 'mfe1-src')
初期适配建议
- 提前在Azure App Service中配置好虚拟目录,比如container部署在根路径
/,mfe1部署在/mfe1路径,和微前端的路由规则对应即可 - 所有MFE的构件命名、构件源别名统一用相同规则,避免后续MFE数量变多后出现识别混乱
内容的提问来源于stack exchange,提问作者getnot
相关产品推荐
相关产品推荐

