【发布时间】:2018-02-11 20:50:01
【问题描述】:
我在 VSTS(Visual Studio Online)中为我的 ASP.NET Core 应用程序配置 CI。 我添加了“docker-compose build”任务来构建定义,但它失败并出现错误:
第 4/9 步:运行 dotnet restore QuizService.sln && dotnet publish QuizService.sln -c Release -o obj/Docker/publish ---> 运行在 7ea0cf1881d1 ... rence = 'SilentlyContinue'; dotnet restore QuizService.sln && dotnet ... 标记“&&”在此版本中不是有效的语句分隔符。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : InvalidEndOfLine 服务 'quizservice' 未能构建:命令 'powershell -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = '静默继续'; dotnet restore QuizService.sln && dotnet publish QuizService.sln -c Release -o obj/Docker/publish' 返回非零代码:1 ##[错误]构建测验服务 ##[error]Service 'quizservice' 构建失败:命令'powershell -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = '静默继续'; dotnet restore QuizService.sln && dotnet publish QuizService.sln -c Release -o obj/Docker/publish' 返回非零代码:1 ##[错误]C:\ProgramData\Chocolatey\bin\docker-compose.exe 失败,返回码:1问题在于我的 dockerfile 在线:
运行 dotnet restore QuizService.sln && dotnet publish QuizService.sln -c Release -o obj/Docker/publish不知何故 docker 不理解 '&&' 运算符: 标记“&&”不是有效的语句分隔符。异常本身似乎与 powershell 而不是 docker 有关。 Poweshell 没有 '&&' 语法,但为什么它在这里开始使用 powershell 运行命令而不是 cmd.exe?
当我在我的开发机器上本地构建时,它就像一个魅力。
有人遇到同样的问题吗?
【问题讨论】:
-
您可以在 OneDrive 上共享详细日志。
-
你解决了这个问题吗?
-
这是一个愚蠢的错误:VSTS 中有几种类型的构建代理。我错误地选择了“Hosted VS2017”,它使用 docker 和 windows 容器(以及 powershell 作为默认 shell)。但是在我的开发机器上,我使用 docker 和 linux 容器(使用 /bin/sh 作为默认 shell)来构建和测试我的项目。所以选择正确的构建代理类型解决了这个问题(因为 /bin/sh 理解 '&&')。您关于更改外壳的答案也是正确的,但在我的情况下,我不应该更改外壳,我只需要选择正确的构建代理,
标签: powershell docker asp.net-core azure-devops