詹金斯谈Ubuntu-多个(相关)问题

詹金斯谈Ubuntu-多个(相关)问题,ubuntu,jenkins,Ubuntu,Jenkins,由于302错误,我正在运行Hardy Heron和Jenkins 1.429,手动安装(即下载软件包并安装,而不是通过此处的正常说明安装) 背景:我对Ubuntu和詹金斯都没有经验。我的任务是设置我认为的“基本”詹金斯CI框,以构建两个java Maven项目,最终是C++项目。我们使用CysYCM作为SCM,我为詹金斯安装了一个非发布的协同插件(我下载了代码并自己构建了)。.我目前没有在Jenkins中启用安全性 我的问题是,当我执行构建时,无法访问源代码目录树(例如,在清理阶段删除目标文件夹

由于302错误,我正在运行Hardy Heron和Jenkins 1.429,手动安装(即下载软件包并安装,而不是通过此处的正常说明安装)

背景:我对Ubuntu和詹金斯都没有经验。我的任务是设置我认为的“基本”詹金斯CI框,以构建两个java Maven项目,最终是C++项目。我们使用CysYCM作为SCM,我为詹金斯安装了一个非发布的协同插件(我下载了代码并自己构建了)。.我目前没有在Jenkins中启用安全性

我的问题是,当我执行构建时,无法访问源代码目录树(例如,在清理阶段删除目标文件夹)。这似乎是因为“jenkins”用户不是源目录的所有者,而是我的构建管理器用户(第一个创建的Ubuntu用户)

我如何解决这个问题?我最初的想法是

1。更改目录树的所有权

2.正确使用用户,即以拥有目录的build manager用户的身份运行作业。我读过关于以其他用户的身份运行Jenkins(或作业)的文章,但我似乎一路上迷路了

3。当我运行用户管理工具时,我甚至看不到在jenkins软件包安装期间创建的jenkins用户,但如果我尝试添加用户“jenkins”,它会告诉我它已经存在

抱歉,如果这是一个新手问题,但我想知道如何正确进行。提前感谢

编辑:我按照默认设置将Jenkins作为守护进程运行


编辑2:“第一个怎么能抓住第二个无法接近的东西?”。我明白你的意思,你是对的,我已经通过另一个用户签出了代码,而不是让jenkins用户签出。但是我仍然需要以我的构建用户身份运行构建,除非我让jenkins用户与我的构建用户一样,这将涉及在运行Synergy server和可能的ot的UNIX设备上创建一个“jenkins”用户还有她的东西。如果可以的话,我宁愿以该用户的身份运行构建。我已经尝试添加了一行
JENKINS\u user=myuser
,但运气不好,还将
DAEMON\u ARGS=--name=JENKINS…
更改为我的用户,而不是“JENKINS”。

如果您遵循了说明,那么您就有了
/etc/init.d/JENKINS
。其中有一个p>单击以设置要作为运行的用户名

此外,要查看您真正拥有的用户,您应该只查看
/etc/passwd
,而不是使用某种gui包装器

但是,除非您的工作区目录中包含NFS,否则所有这些都没有意义。无论Jenkins以什么身份运行,该用户都在运行SCM签出,然后是构建,那么第一个用户怎么能抓住第二个用户无法获得的东西呢


在任何情况下,
ls-l
是您了解谁实际拥有什么以及模式是什么的好朋友。

基本上,您需要更改/etc/默认文件中的JENKINS_用户,正如bmargulies所说。这将设置用于启动JENKINS的用户。如果您这样做并重新启动JENKINS,则不会有任何效果,因此您需要在新用户的某些目录上运行chown:

chown -R <user>:<group> /var/run/jenkins/war 
chown <user>:<group> /var/log/jenkins
chown <user>:<group> /etc/init.d/jenkins
chown <user>:<group> /etc/default/jenkins
chown-R:/var/run/jenkins/war
chown:/var/log/jenkins
周:/etc/init.d/jenkins
chown:/etc/default/jenkins
我认为最重要的是,日志具有正确的权限,以便在日志未启动时可以检查日志是否存在错误;-) 坏消息是,现在,如果您从存储库更新jenkins,它将覆盖权限,并且您必须在每次更新后进行chown舞蹈。我认为有一个关于这个的bug报告,所以也许他们会很快修复它


希望这能有所帮助。

我还需要
chmod
我的一些其他路径:

/var/lib/jenkins
/var/cache/jenkins
/var/run/jenkins

首先谢谢。有几件事我忘了提。我确实查看了/etc/init.d/jenkins,找到了$jenkins_USER的引用。我很困惑,因为我的环境中没有这个env变量,也没有将它传递给脚本,也没有在jenkins脚本中设置它,所以它设置在哪里?我是将其设置为环境的一部分还是在脚本中?我在詹金斯维基上找不到这方面的参考。而且我确实在passwd文件中看到了jenkins用户。但请解释“…除非您的工作区目录中包含NFS”