【问题标题】:How to run jenkins as a different user如何以不同的用户身份运行 jenkins
【发布时间】:2011-07-14 11:17:03
【问题描述】:

我一直在努力学习教程和这个:Deploy as Jenkins User or Allow Jenkins To Run As Different User?

但我仍然不能因为计算之神的爱,以不同的用户身份运行。以下是我所做的步骤:

  1. 为 jenkins(LTS) 下载 macosx pkg
  2. 设置插件等和 git
  3. 尝试构建它

我不断收到无法克隆错误,因为 jenkins 一直以匿名方式启动:

Started by user anonymous

如何设置让 jenkins 像我一样运行?我使用的是 jenkins Web UI,所以它位于 localhost:8080

我也尝试使用 /login 登录,但我什至无法使用我的姓名或 root 登录。

人员选项卡甚至没有创建用户链接,所以是的,我被卡住了。请帮忙?

【问题讨论】:

  • 将 jenkins 设置为另一个用户对我来说太痛苦了。这意味着代码设计供应钥匙链地狱。我切换到使用 jenkins-app,如下 sti 建议的那样。 stackoverflow.com/a/9831634/300694

标签: continuous-integration jenkins


【解决方案1】:

@Sagar 给出的“问题 2”答案适用于大多数 git 服务器,例如 gitorious。

但是,在像 gitolite 这样的系统中会出现名称冲突,其中公共 ssh 密钥作为以用户名命名的文件签入,即keydir/jenkins.pub。如果有多个 jenkins 服务器需要访问同一个 gitolite 服务器怎么办?

(注意:这是关于运行 Jenkins 守护程序而不是以用户身份运行构建作业(由 @Sagar 的“问题 1”解决)。)

所以在这种情况下,您确实需要以其他用户身份运行 Jenkins 守护程序。

有两个步骤:

步骤 1

主要是更新JENKINS_USER 环境变量。这是一个显示如何将用户更改为ptran 的补丁。

开始补丁
--- etc/default/jenkins.old     2011-10-28 17:46:54.410305099 -0700
+++ etc/default/jenkins 2011-10-28 17:47:01.670369300 -0700
@@ -13,7 +13,7 @@
 PIDFILE=/var/run/jenkins/jenkins.pid

 # user id to be invoked as (otherwise will run as root; not wise!)
-JENKINS_USER=jenkins
+JENKINS_USER=ptran

 # location of the jenkins war file
 JENKINS_WAR=/usr/share/jenkins/jenkins.war
--- etc/init.d/jenkins.old      2011-10-28 17:47:20.878539172 -0700
+++ etc/init.d/jenkins  2011-10-28 17:47:47.510774714 -0700
@@ -23,7 +23,7 @@

 #DAEMON=$JENKINS_SH
 DAEMON=/usr/bin/daemon
-DAEMON_ARGS="--name=$NAME --inherit --env=JENKINS_HOME=$JENKINS_HOME --output=$JENKINS_LOG -   -pidfile=$PIDFILE" 
+DAEMON_ARGS="--name=$JENKINS_USER --inherit --env=JENKINS_HOME=$JENKINS_HOME --output=$JENKINS_LOG --pidfile=$PIDFILE" 

 SU=/bin/su
结束补丁

第二步

更新 jenkins 目录的所有权:

chown -R ptran /var/log/jenkins
chown -R ptran /var/lib/jenkins
chown -R ptran /var/run/jenkins
chown -R ptran /var/cache/jenkins

第三步

重启詹金斯

sudo service jenkins restart

【讨论】:

  • 嗨彼得,我也有同样的问题,但我在 redhat 上安装了它,我唯一拥有的是 /etc/init.d/jenkins 和 /etc/sysconfig/jenkins (是一个 xml 文件)你会建议像上面显示的那样为 redhat 上的用户做吗?
  • @7dr3am7:我不能肯定地说,我的公司在 Ubuntu 上进行了标准化,所以我已经有一段时间没有使用 RedHat 系统了。 /etc/sysconfig/jenkins 看起来像这样吗:jenkins.sysconfig.in?如果是这样,那么您可以尝试更新 JENKINS_USER 变量,然后更新 /etc/init.d/jenkins 类似于我上面的补丁。
  • 嗨,彼得!是的,这就是我要找的!最后一个问题:我是否也需要提供用户的密码? (这似乎是合法的)
  • @7dr3am7:不,我不需要用户密码(在我的示例中为“ptran”)就可以做到这一点。
  • 嗨,彼得,关于“我无法通过 Manage Jenkins > Configure System 按照@Sagar 的“问题 1”中的建议执行此操作,我说的是作为用户运行构建作业,而不是Jenkins 守护进程。如果您看到问题 1,它与由匿名运行的构建有关,而不是守护进程本身。
【解决方案2】:

问题 1:

Started by user anonymous

并不意味着 Jenkins 以匿名用户身份开始。

这只是意味着启动构建的人没有登录。如果您启用 Jenkins 安全性,您可以为人们创建用户名,当他们登录时,

"Started by anonymous" 

会变成

"Started by < username >". 

注意:您不必启用安全性即可运行 jenkins 或正确克隆。

如果您想启用安全性并创建用户,您应该在Manage Jenkins &gt; Configure System 看到选项。


问题 2:

“无法克隆”错误是完全不同的问题。它与您登录 jenkins 或启用安全性无关。这只是意味着 Jenkins 没有从您的 git SCM 克隆的凭据。

查看the Jenkins Git Plugin 了解如何设置 Jenkins 以使用您的 git 存储库。

希望对您有所帮助。

【讨论】:

  • 那是我正在阅读的内容,但后来我对如何将用户设置为我自己完全傻眼了,因为它显然是作为“守护进程”运行的。当我点击“由匿名开始”(匿名是一个链接)并将我发送到用户设置屏幕时,我终于想通了。我想用户界面不是愚蠢的友好:P 谢谢你的提示!
  • @sti 有一个很好的解决方案 - 请参阅下面的“jenkins-app”。
  • 对否决票的解释会很好,谢谢。
【解决方案3】:

在 Mac OS X 上,我启用 Jenkins 从我的(私人)Github 存储库中提取的方式是:

首先,确保您的用户拥有 Jenkins 目录

sudo chown -R me:me /Users/Shared/Jenkins

然后编辑 Jenkins 的 LaunchDaemon plist(位于 /Library/LaunchDaemons/org.jenkins-ci.plist),以便您的用户是 GroupName 和 UserName:

    <key>GroupName</key>
    <string>me</string>
...
    <key>UserName</key>
    <string>me</string>

然后重新加载 Jenkins:

sudo launchctl unload -w /Library/LaunchDaemons/org.jenkins-ci.plist
sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist

然后 Jenkins,因为它像你一样运行,所以可以访问你的 ~/.ssh 目录,其中包含你的密钥。

【讨论】:

  • 嗨,Commanda,此外,您还需要更改权限 sudo chmod -R 755 /path/to/folder 此外,您还需要更改包含 jenkins 用户的配置文件
  • @7dr3am7.. 需要更改哪些文件权限?配置在哪里以及需要进行哪些更改?我收到以下错误“stderr:主机密钥验证失败。”
  • 在执行 GroupName 和 UserName 更改后,我得到了这个:launchctl: Dubious permissions on file (skipping): /Library/LaunchDaemons/org.jenkins-ci.plist 没有找到加载这并不意外,别人怎么能“使用”你的帐户?任何地方都没有授权。 Jenkins 可能需要你的密码什么的,我们可以把它放在哪里?
  • 在将您的用户名添加到 GroupName 和 UserName 后,您需要做的是:apple.stackexchange.com/questions/63857/…'上帝保佑'其他人知道并想知道操作系统是如何工作的。因为我很高兴我没有!为了执行一个简单的操作,你应该知道多少愚蠢的规则和授权。
  • 你会得到一颗金星。在尝试了几个小时的不同解决方案后,这是最简单的实施方式,并且第一次奏效。我现在可以回家了。
【解决方案4】:

如果你真的想像你一样运行 Jenkins,我建议你查看我的 Jenkins.app。在 Mac 上运行 Jenkins 的另一种简单方法。

https://github.com/stisti/jenkins-app/

https://github.com/stisti/jenkins-app/downloads下载

【讨论】:

  • 在尝试使用标准安装运行 jenkins 数小时后,我放弃了并切换到您的解决方案。我会尽快提供更多反馈。
  • 太棒了!解决了我所有的配置问题。如果您使用的是 Mac,这就是您要走的路!
  • 制作并打开应用程序后,我得到:'“Jenkins”已损坏,无法打开。你应该把它移到垃圾箱。鉴于这个答案和 github 上的项目都是 5 年的历史,这似乎是一个死胡同。
【解决方案5】:

您也可以集成到 LDAP 或 AD。效果很好。

【讨论】:

  • @shartp,怎么做?
  • 这可能是一个可能的解决方案,但更多信息将有助于了解它(可能)工作的方式和原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 2019-06-24
相关资源
最近更新 更多