Я пытаюсь создать свое базовое приложение asp.net с помощью Jenkins, который размещается с Tomcat8 на машине Ubuntu 16.04. Первая сборка успешно выполняется, но при запуске сборок после этого они перестали работать (не изменяя кода), потому что Jenkins делает что-то странное с расположением файлов.
Заявка подается на машине окон. После продвижения в репозиторий мерзавца Jenkins вытягивает источник и запускает сборку.
Это - сценарий сборки, который я использую:
dotnet restore
dotnet build --output "<path to workspace>/build"
dotnet publish --output "<path to workspace>/publish"
Как я сказал прежде, в первый раз, когда эта сборка успешно выполняется, и я могу развернуть свое веб-приложение. Во второй раз, когда я пытаюсь создать, это - то, что происходит:
+ 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.
По некоторым причинам путь окон к файлам добавляется к пути человечности.
Почему путь окон добавляется во время второй сборки?
Как я решаю эту проблему?
Я исправил эту проблему с помощью параметра --runtime.
dotnet build --runtime ubuntu.16.04-x64 --output "<path to workspace>/build"
Устанавливая эту опцию, команда dotnet знает, для какой среды она должна быть построена. Это предотвращает путаницу в пути.