如何使用私有Linux托管构建代理从VSTS发布Dotnet?

时间:2018-03-06 13:08:13

标签: .net amazon-ec2 .net-core azure-devops

场景 - 我试图在Ubuntu ec2实例上基于ASP.Net core2.0构建和部署项目。

来自VSTS -
 我在VSTS帐户上创建了一个Linux私有构建代理。

安装Linux Build Agent -
我已经安装了dotnet core 2.1.3 此外,在ec2上成功注册了Linux私有代理。

现在,
从VSTS - 构建和发布选项卡 -
构建定义我有以下任务 -

1)dotnet restore - 此任务成功执行。

dotnet restore image

2)dotnet build - 此任务成功执行。
dotnet build image

3)dotnet test - 此任务成功执行。
dotnet test image

4)dotnet publish - 此任务使用.csproj为我的所有项目创建已发布的文件。
publish task image

5)发布构建工件任务publish artifact task

在任务步骤4,这意味着dotnet发布步骤 - 它在Ubuntu私有托管代理ec2上的路径上发布已发布的文件。例如,它发布的路径可以是 -
ubuntu @ ip-111-11-1-111:/ agent / _work / 1 / a
linux build agent artifact folder
如果您已经注意到" dotnet发布"任务,我正在指定特定的.csproj文件,仍然在工件" a" linux构建代理上的文件夹,它发布所有源项目 另外,请注意我在此任务中遇到了一些错误,因此我只能发布" a"这个输出不完整的文件夹。
有关更多信息,我还发布了屏幕,以了解来源和#34;构建代理上的文件夹。
linux build agent -source folder

请告诉我,如何只发布VSTS中的特定项目/源文件夹?

1 个答案:

答案 0 :(得分:0)

您应该在步骤4(.NET Core任务命令选项)中使用发布而不是自定义:

enter image description here

注意:您应该取消选择.NET Core发布任务中的“发布Web项目”选项。

由于您的第4步发布了所有项目的原因,因此造成了这种情况  默认情况下,选项publishWebProjects设置为true,如果在.NET Core任务中使用自定义命令,则无法更改该选项。因此它实际上搜索**/*.csproj模式并忽略您指定的项目。