Azure Pipeline添加VS Test步骤后Docker构建失败、站点无法运行求助
问题根因
1. vs2017-win2016代理Docker构建失败的原因
你用到的mcr.microsoft.com/dotnet/aspnet:3.1镜像已不再提供Windows Server 2016(系统版本号10.0.14393)对应的适配版本,拉取镜像时找不到对应系统架构的manifest文件,所以直接报错退出。
2. windows-2019代理构建后站点无法访问的原因
Windows系统的Docker默认拉取、构建Windows容器镜像,而你的站点部署环境是Linux容器运行时,Windows容器镜像无法在Linux环境下正常启动,所以站点无法访问。你之前用Ubuntu代理构建的是Linux容器镜像,和部署环境兼容,因此切换回Ubuntu后站点恢复正常。
解决方案
推荐两种可落地的方案,你可以根据自身需求选择:
方案一:拆分流水线阶段,使用双代理执行
将流水线拆分为两个独立阶段,分别用不同的代理运行:
- 第一阶段使用
windows-2019代理,仅执行Selenium测试步骤,测试通过后才触发下一阶段 - 第二阶段使用
Ubuntu-20.04代理,执行Docker镜像构建、推送步骤,构建出来的镜像为适配部署环境的Linux容器镜像,不会出现兼容性问题
方案二:直接在Ubuntu代理上运行Selenium测试
你当前使用的Selenium 4版本完全支持Linux环境运行,Azure官方的Ubuntu-20.04代理默认已预装Chrome浏览器和对应版本的ChromeDriver,不需要更换Windows代理就能直接跑Selenium UI测试,全程用同一个Ubuntu代理执行测试、构建、推送步骤,既没有兼容性问题,也不用调整流水线的阶段拆分。
小提示:如果你的Selenium测试代码中写死了Windows系统下的浏览器路径、文件路径等配置,只需要改成适配Linux的写法,或者通过环境变量动态适配不同系统即可。
内容的提问来源于stack exchange,提问作者Kev
相关产品推荐
相关产品推荐

