【问题标题】:How to add accounts to Jenkins without the web interface?如何在没有 Web 界面的情况下向 Jenkins 添加帐户?
【发布时间】:2014-06-25 21:33:06
【问题描述】:

我想自动化 Jenkins 的整个安装,给定一个用户名列表,我希望能够为每个用户创建用户帐户。我读过的唯一设置用户帐户的方法是: https://wiki.jenkins-ci.org/display/JENKINS/Standard+Security+Setup

尝试查看是否有使用命令行配置的选项: https://localhost:8080/cli/ 但似乎并非如此。

是否可以在不使用 Web 界面的情况下添加用户帐户?更具体地说,一种可编写脚本的方法。

我最后的手段是做原始的帖子请求,但希望有更好的方法。

【问题讨论】:

  • 如果您有LDAP或AD,则无需单独添加帐户,可以通过用户组控制权限,通过LDAP/AD管理
  • @Slav,您将如何以编程方式设置此配置?您是否知道任何可以预先配置并直接放入安装的配置文件?
  • 所有 Jenkins 配置(和插件)都是 XML 文件,因此您可以使用脚本语言以编程方式更改它们(某些更改在重新启动/重新加载之前不会生效)。在$JENKINS_HOME 下有一个config.xml,它是主要配置,包括安全/身份验证。看看它。至于重载,jenkins cli 有重载命令。

标签: jenkins continuous-integration command-line-interface


【解决方案1】:

是的,当然,可以为 jenkins 编写脚本配置。但不能单独使用 cli 工具。

我猜您想将“Jenkins 自己的用户数据库”与项目矩阵授权策略一起使用。

准备配置的步骤:

  1. 手动配置您的 Jenkins(启用安全性、添加卷和至少一个用户)
  2. 关闭您的 jenkins(让他将所有内存更改写入磁盘)
  3. 将 $JENKINS_HOME/config.xml 复制到您的配置脚本(作为种子数据)
  4. 复制 $JENKINS_HOME/users/(作为种子数据)
  5. 获取cli工具:cd /tmp; wget -nv http://localhost:8080/jnlpJars/jenkins-cli.jar

如果您不想拥有静态种子数据(每个用户一个 config.xml),您可以使用 bash 脚本或更高级的工具生成 (users/username/)config.xml。但为简单起见,您可以将 users/username1/config.xml 作为模板。用占位符替换相关数据,例如“PLACEHOLDER_FULLNAME”表示完整的用户名。

例如: 改变

"<fullName>sample full username</fullName>" 

"<fullName>PLACEHOLDER_FULLNAME</fullName>"

在您的配置脚本中,迭代所有用户。对于每个用户,将每个占位符替换为正确的值。

例如

cp $SEED_DATA/templates/user/config.xml /tmp/config.xml
sed -e "s/\${PLACEHOLDER_USERNAME}/1/" -e "s/\${ChuckNorris}/dog/" /tmp/config.xml
sed -e "s/\${PLACEHOLDER_EMAIL}/1/" -e "s/\${he@findsyou.com}/dog/" /tmp/config.xml
...
mkdir -p $SEED_DATA/users/$USERNAME/
cp /tmp/config.xml $SEED_DATA/users/$USERNAME/config.xml

当你想使用生成的用户config.xml时,请在$JENKINS_HOME/config.xml中为每个用户生成一些权限设置:

<authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
   ...
   <permission>hudson.model.View.Create:username1</permission>
   <permission>hudson.model.View.Delete:username1</permission>
   <permission>hudson.model.View.Read:username1</permission>
   ...
   <permission>hudson.model.View.Create:username2</permission>
   <permission>hudson.model.View.Delete:username2</permission>
   <permission>hudson.model.View.Read:username2</permission>
   ...
</authorizationStrategy>

配置步骤:

  1. 像以前一样安装 jenkins,也许是动态配置生成器(见上文)
  2. cp $SEED_DATA/config.xml $JENKINS_HOME/
  3. cp -R $SEED_DATA/users/ $JENKINS_HOME/
  4. chown -R "jenkins:jenkins" $JENKINS_HOME/users/(可能是可选的)
  5. cd /tmp; java -jar jenkins-cli.jar -s http://localhost:8080/ reload-configuration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2011-03-06
    • 2017-10-20
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多