dotnet构建访问路径被拒绝

时间:2017-09-02 14:02:23

标签: linux ubuntu jenkins .net-core

我已经创建了一个jenkins服务器,我正在尝试在服务器上构建一个.net核心2.0.0项目。我已经能够成功地从源代码控制中提取并在工作区中存储源文件。但是,我遇到了运行dotnet build命令的问题。这就是我得到的。

  

/usr/share/dotnet/sdk/2.0.0/Microsoft.Common.CurrentVersion.targets(4116,5):   错误MSB3021:无法复制文件   “obj / Debug / netcoreapp2.0 / ubuntu.16.04-x64 / Musify.pdb”到   “斌/调试/ netcoreapp2.0 / ubuntu.16.04-64 / Musify.pdb”。访问   路径被拒绝。 [/var/lib/jenkins/workspace/Musify/Musify.csproj]

现在,我已经对/usr/share/dotnet/sdk/2.0.0/中的每个文件和目录赋予了读写和执行权限,并且我已经给了我的每个文件和目录的读写和执行权限。工作区(/ var / lib / jenkins / workspace / Musify)。我也相信我的jenkins用户是sudo组的一部分。

我遇到的奇怪之处在于,我能够以root身份在我的工作区目录(/ var / lib / jenkins / workspace / Musify)中运行dotnet构建,并且项目构建。但是,我不能在jenkins用户(谁应该成为sudo组的一部分)下获得相同的结果。我的问题是,我如何验证Jenkins是否正在使用jenkins系统用户,并且该用户具有运行此命令的正确权限。我在ubuntu 16.04 x64服​​务器上托管jenkins。

更新: Adding this to show ps -ef | grep jenkins

2 个答案:

答案 0 :(得分:2)

在jenkins主机运行的命令行

ps -ef | grep jenkins

第一列将为您提供USERID,正如您所说,它应该是jenkins

然后,如果您可以以jenkins身份登录到运行jenkins服务器的主机,请执行以下操作....

groups

这将列出jenkins是

的一部分的群组

答案 1 :(得分:0)

如果您要解决dotnet build问题,请执行以下操作:

  1. 将docker上的DOTNET_CLI_HOME环境变量设置为通用变量 容器上类似/tmp的路径。 dotnet使用此路径 创建必要的文件来构建项目。校验 Dotnet build permission denied in Docker container running Jenkins
  2. 使用-o或其他可访问的路径在所需目录中创建工件。例如dotnet build -o /tmp/dotnet/build/ microsoftisnotthatbad.sln

要解决jenkins用户问题,请在容器中运行whoami。如果您得到whoami: cannot find name for user ID blahblah,则表示passwd文件中找不到该用户Docker Plugin for Jenkins Pipeline - No user exists for uid 1005下有2个答案,如果第1项不起作用,请尝试第二个:

  1. 将主机passwd安装到容器中。
  2. 如果在工作所使用的Jenkins服务器或从属服务器上使用LDAP之类的身份提供程序登录了jenkins用户,则主机的passwd文件将没有jenkins用户。检查该帖子的其他答案。
相关问题