我已经创建了一个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。
答案 0 :(得分:2)
在jenkins主机运行的命令行
ps -ef | grep jenkins
第一列将为您提供USERID,正如您所说,它应该是jenkins
然后,如果您可以以jenkins身份登录到运行jenkins服务器的主机,请执行以下操作....
groups
这将列出jenkins是
的一部分的群组答案 1 :(得分:0)
如果您要解决dotnet build
问题,请执行以下操作:
DOTNET_CLI_HOME
环境变量设置为通用变量
容器上类似/tmp
的路径。 dotnet
使用此路径
创建必要的文件来构建项目。校验
Dotnet build permission denied in Docker container running Jenkins -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项不起作用,请尝试第二个:
passwd
安装到容器中。 LDAP
之类的身份提供程序登录了jenkins用户,则主机的passwd
文件将没有jenkins用户。检查该帖子的其他答案。