VSTS docker任务在docker RUN命令中的'&&'令牌上失败

Phi*_*rov 3 powershell docker azure-devops asp.net-core

我在VSTS(在线Visual Studio)中为ASP.NET Core应用程序配置CI。我添加了“ docker-compose build”任务来构建定义,但是它失败并出现错误:

    步骤4/9:运行dotnet还原QuizService.sln && dotnet发布QuizService.sln -c版本-o obj / Docker / publish
    --->在7ea0cf1881d1中运行
    ... rence ='SilentlyContinue'; dotnet恢复QuizService.sln && dotnet ...
    在此版本中,标记“ &&”不是有效的语句分隔符。
    + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException
    + FullyQualifiedErrorId:InvalidEndOfLine
    服务'quizservice'构建失败:命令'powershell -Command $ ErrorActionPreference ='Stop'; $ ProgressPreference ='SilentlyContinue'; dotnet恢复QuizService.sln && dotnet发布QuizService.sln -c版本-o obj / Docker / publish'返回非零代码:1
    ## [错误]构建测验服务
    ## [error] Service'quizservice'生成失败:命令'powershell -Command $ ErrorActionPreference ='Stop'; $ ProgressPreference ='SilentlyContinue'; dotnet恢复QuizService.sln && dotnet发布QuizService.sln -c版本-o obj / Docker / publish'返回非零代码:1
    ## [错误] C:\ ProgramData \ Chocolatey \ bin \ docker-compose.exe失败,返回码:1

问题出在我的dockerfile上:

运行dotnet还原QuizService.sln && dotnet发布QuizService.sln -c版本-o obj / Docker / publish

码头工人以某种方式不理解'&&'运算符: 令牌'&&'不是有效的语句分隔符。异常本身似乎与powershell有关,而不与docker有关。Poweshell没有'&&'语法,但是为什么它在这里开始使用Powershell来运行RUN命令而不是cmd.exe?

当我在开发机器上本地构建时,它就像一种魅力。

有人遇到过同样的问题吗?

Phi*_*rov 5

问题出在错误的构建代理类型中。“托管的VS2017”构建代理无法构建项目,因为它使用带有Windows容器的docker(并且将powershell作为默认外壳)。但是在我的开发机上,我将docker与linux容器一起使用(/ bin / sh为默认外壳)。选择正确的构建代理类型可以解决此问题(因为/ bin / sh理解'&&')。