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

如何通过Python脚本远程启用Jenkins文件夹项目级安全并分配权限

实现方案

完全可以通过Python脚本直接完成文件夹的项目级安全策略配置,不需要手动登录Jenkins操作,最稳定的实现方式是复用Groovy配置逻辑,通过Jenkins内置的脚本接口直接执行,和你在Script Console里运行的效果完全一致。

核心实现逻辑

你已经完成了调用/createItem接口创建文件夹的步骤,创建完成后只需要额外调用Jenkins的/scriptText接口,传入适配好参数的Groovy权限配置脚本即可完成全部配置,不需要额外安装其他服务端组件。

可直接复用的Python示例代码

import requests
import time

# 替换为你的Jenkins实际配置
JENKINS_BASE_URL = "http://your-jenkins-instance-address"
JENKINS_AUTH = ("your-admin-username", "your-admin-api-token")
NEW_FOLDER_FULL_NAME = "test-folder"  # 多层文件夹传完整路径,如 "parent/child-folder"
GRANT_TARGET_USER = "zhangsan"  # 要分配全部权限的用户名

# --- 此处保留你原有的调用 /createItem 创建文件夹的代码 ---
# 创建完成后建议等待1-2秒,避免Jenkins内部资源未加载导致后续配置找不到对象
time.sleep(2)

# 配置基于项目的安全策略 + 分配用户全权限
config_groovy = f"""
import com.cloudbees.hudson.plugins.folder.Folder
import hudson.security.ProjectMatrixAuthorizationStrategy
import hudson.security.Permission

// 读取刚创建的文件夹对象
def targetFolder = Jenkins.instance.getItemByFullName("{NEW_FOLDER_FULL_NAME}")
if (targetFolder == null) {{
    throw new RuntimeException("指定文件夹不存在,请检查路径")
}}

// 启用基于项目的授权策略
def authStrategy = new ProjectMatrixAuthorizationStrategy()
// 给指定用户分配所有可用操作权限
Permission.getAll().each { perm ->
    authStrategy.add(perm, "{GRANT_TARGET_USER}")
}
targetFolder.setAuthorizationStrategy(authStrategy)
// 持久化保存配置
targetFolder.save()
return "权限配置成功"
"""

# 提交脚本到Jenkins执行
resp = requests.post(
    f"{JENKINS_BASE_URL}/scriptText",
    auth=JENKINS_AUTH,
    data={"script": config_groovy}
)
resp.raise_for_status()
print(resp.text)

注意事项

  • 提前确认Jenkins已安装Matrix Authorization Strategy Plugin,这是project-based security配置界面对应的依赖插件,未安装时Groovy脚本会报类找不到的错误。
  • 认证信息建议使用Jenkins用户的API Token,不要使用账号登录密码,兼容性和安全性更好。
  • 如果不想手写Groovy逻辑,也可以使用python-jenkins等第三方封装库,但这类库对文件夹级细粒度权限的封装覆盖不全,遇到Jenkins版本差异容易出兼容问题,优先推荐直接调用/scriptText接口的方案。

配置界面参考图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:27:18