【问题标题】:dotnet build access to path is denieddotnet 构建对路径的访问被拒绝
【发布时间】:2018-02-11 08:45:51
【问题描述】:

我已经创建了一个 jenkins 服务器,我正在尝试在服务器上构建一个 .net core 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”到 “bin/Debug/netcoreapp2.0/ubuntu.16.04-x64/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 build,然后项目就会构建。但是,我不能在 jenkins 用户(应该是 sudo 组的一部分)下获得相同的结果。我的问题是,如何验证 Jenkins 正在使用 jenkins 系统用户,并且该用户具有运行此命令的正确权限。我在 ubuntu 16.04 x64 服务器上托管 jenkins。

更新:

【问题讨论】:

  • 您只需要授予完全权限,错误应该会得到修复。

标签: linux ubuntu jenkins .net-core


【解决方案1】:

在你的 jenkins 主机上运行命令行

ps -ef | grep jenkins

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

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

groups

这将列出 jenkins 所属的组

【讨论】:

  • 我不太确定我在寻找什么输出
  • 将输出添加到问题中。我去看看。
  • 将其添加到操作中
  • 从该输出中,Jenkins 服务器正在使用 jenkins 帐户运行。
【解决方案2】:

如果您想修复 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项不行,请尝试第2项:

  1. 将主机passwd 挂载到容器中。
  2. 如果 jenkins 用户在 Jenkins 服务器或您的工作使用的从属服务器上使用身份提供程序(如 LDAP)登录,则主机的 passwd 文件将没有 jenkins 用户。检查该帖子的其他答案。

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2021-04-02
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    相关资源
    最近更新 更多