You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python Jenkins包在Jenkins任务中为组添加用户?

解决方案:为Jenkins任务的权限组添加用户

由于python-jenkins库没有直接封装“添加用户到组”或“在任务权限中关联用户与组”的方法,我们可以通过调用Jenkins的REST API来实现,以下是两种常见场景的实现方式:

场景1:将用户添加到Jenkins全局用户组(内置用户系统)

如果你的Jenkins使用内置用户数据库,可通过修改用户的组属性来实现:

  1. 获取目标用户的配置XML
  2. 在用户的<groups>节点中添加目标组名
  3. 提交修改后的配置回Jenkins

代码示例:

import jenkins
import xml.etree.ElementTree as ET

# 连接Jenkins
server = jenkins.Jenkins('http://your-jenkins-url', username='admin', password='your-api-token')

# 获取目标用户的配置XML
user_config = server.get_user_config('target-user')
root = ET.fromstring(user_config)

# 找到或创建<groups>节点
groups_node = root.find('groups')
if groups_node is None:
    groups_node = ET.SubElement(root, 'groups')

# 添加目标组(比如"developers")
new_group = ET.SubElement(groups_node, 'string')
new_group.text = 'developers'

# 将修改后的XML转为字符串
updated_config = ET.tostring(root, encoding='utf8').decode('utf8')

# 提交修改
server.reconfig_user('target-user', updated_config)

场景2:在Jenkins任务中直接为用户分配组对应的权限(项目矩阵授权)

如果不需要全局组,只是想让用户获得某个任务中特定组的权限,可直接修改任务的权限配置:

  1. 获取任务的配置XML
  2. 在<AuthorizationMatrixProperty>节点下添加用户对应的权限条目(和目标组权限一致)
  3. 提交修改后的配置

代码示例:

import jenkins
import xml.etree.ElementTree as ET

server = jenkins.Jenkins('http://your-jenkins-url', username='admin', password='your-api-token')
job_name = 'your-target-job'

# 获取任务配置
job_config = server.get_job_config(job_name)
root = ET.fromstring(job_config)

# 找到权限配置节点
auth_property = root.find('.//hudson.security.AuthorizationMatrixProperty')
if auth_property is None:
    # 如果任务没有开启权限控制,先创建该节点
    props_node = root.find('properties')
    if props_node is None:
        props_node = ET.SubElement(root, 'properties')
    auth_property = ET.SubElement(props_node, 'hudson.security.AuthorizationMatrixProperty')
    permissions_node = ET.SubElement(auth_property, 'permission')
else:
    permissions_node = auth_property.findall('permission')

# 添加用户的权限(示例:添加读权限,和developers组权限一致)
new_permission = ET.SubElement(auth_property, 'permission')
new_permission.text = 'hudson.model.Item.Read:target-user'
# 可根据需要添加更多权限,比如构建权限:'hudson.model.Item.Build:target-user'

# 提交修改后的配置
updated_job_config = ET.tostring(root, encoding='utf8').decode('utf8')
server.reconfig_job(job_name, updated_job_config)

注意事项

  • 确保你的Jenkins账号有足够权限(比如管理员权限)执行用户和任务配置修改
  • API令牌可在Jenkins用户设置中生成(不要用密码直接连接)
  • 如果使用LDAP或其他外部用户系统,用户组的管理需要在对应系统中操作,Jenkins会同步组信息

内容的提问来源于stack exchange,提问作者Havishaa Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:16:13