Ubuntu Jenkins 在构建时附加 Windows 路径

Ubuntu Jenkins 在构建时附加 Windows 路径

我正在尝试使用 Jenkins 构建我的 asp.net core 应用程序,该应用程序托管在 Ubuntu 16.04 计算机上的 Tomcat8 上。第一次构建成功,但在之后启动构建时,它们失败(没有更改任何代码),因为 Jenkins 对文件位置做了一些奇怪的事情。

该应用程序正在 Windows 机器上制作。推送到 git 存储库后,Jenkins 会提取源代码并开始构建。

这是我正在使用的构建脚本:

dotnet restore
dotnet build --output "<path to workspace>/build"
dotnet publish --output "<path to workspace>/publish"

正如我之前所说,第一次构建成功,我可以部署我的 Web 应用程序。第二次尝试构建时,发生了以下情况:

+ dotnet restore
  Restore completed in 45.32 ms for /usr/share/tomcat8/.jenkins/workspace/Memiro/MemiroFrontend/Memiro.FrontEnd/Memiro.FrontEnd.csproj.
  Restore completed in 30.38 ms for /usr/share/tomcat8/.jenkins/workspace/Memiro/MemiroFrontend/Memiro.FrontEnd/Memiro.FrontEnd.csproj.
[MemiroFrontend] $ /bin/sh -xe /tmp/tomcat8-tomcat8-tmp/jenkins4348889529144999043.sh
+ dotnet build --output /var/www/dotnet-app/memiro-frontend/build
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

/usr/share/dotnet/sdk/2.0.0/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(323,5): error : Assets file '/usr/share/tomcat8/.jenkins/workspace/Memiro/MemiroFrontend/Memiro.FrontEnd/C:/Users/Menno/source/repos/MemiroFrontEnd/Memiro.FrontEnd/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/usr/share/tomcat8/.jenkins/workspace/Memiro/MemiroFrontend/Memiro.FrontEnd/Memiro.FrontEnd.csproj]
/usr/share/dotnet/sdk/2.0.0/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(165,5): error : Assets file '/usr/share/tomcat8/.jenkins/workspace/Memiro/MemiroFrontend/Memiro.FrontEnd/C:/Users/Menno/source/repos/MemiroFrontEnd/Memiro.FrontEnd/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/usr/share/tomcat8/.jenkins/workspace/Memiro/MemiroFrontend/Memiro.FrontEnd/Memiro.FrontEnd.csproj]

Build FAILED.

由于某种原因,文件的 Windows 路径被附加到 ubuntu 路径。

为什么在第二次构建时会附加 Windows 路径?

我该如何解决这个问题?

答案1

我使用 --runtime 选项解决了这个问题。

dotnet build --runtime ubuntu.16.04-x64 --output "<path to workspace>/build"

通过设置此选项,dotnet 命令知道它必须为哪个运行时构建。这可以防止发生路径混淆。

相关内容