调用 Python 脚本执行 Jenkins 构建任务出现 403 forbidden 错误的解决方案

69次阅读
没有评论

问题描述

在尝试使用 Python 脚本外部构建 Jenkins 任务时,出现了 403 forbidden 错误,但其他 GET 请求的 API 正常工作。以下是用户提供的 Python 代码片段和 Jenkins 详情。

Python 代码片段:

j = jenkins.Jenkins('http://localhost:8080/login?from=%2F', 'admin', 'admin@123')
j.get_jobs()
print(j.jobs_count())
print(j.get_jobs())
j.build_job('demo1')

Jenkins 详情:
– 用户可以从 UI 成功创建和构建作业。
– Jenkins 版本为 2.237。
– 登录的用户可以执行任何操作,CSRF 保护已禁用。
– 与用户一起使用相同的脚本和 Jenkins 版本的朋友可以成功构建任务。

解决方案

方案1

首先,根据 Jenkins 官方建议(Jenkins 版本 > 2.2xx),您可以为用户创建一个 API 令牌,然后在脚本中使用该令牌来触发 Jenkins 任务。

以下是进一步的说明和链接以供参考:

  1. Jenkins 官方文档 – 用 Shell 和 Curl 进行脚本客户端身份验证
  2. Jenkins 官方文档 – 远程访问 API(包括 CSRF 保护)
  3. Jenkins 官方文档 – 安全管理

方案2

在一些情况下,可能会遇到 Python 环境或库版本与朋友的不同,导致脚本在朋友的环境中可以正常工作,但在您的环境中出现问题。如果您的脚本仍然无法正常工作,可以考虑尝试以下步骤:

  1. 检查 Jenkins 版本:确保您的 Jenkins 版本与朋友的版本相同。如果版本不同,可能存在某些差异。

  2. 升级 Jenkins 插件:确保使用的 Jenkins 插件版本是最新的。有时旧的插件版本可能存在问题,通过升级插件可能会解决问题。

  3. 检查 Python 环境:确认您的 Python 环境与朋友的相似,包括使用的 Jenkins Python 库版本等。

  4. 尝试其他网络配置:在某些情况下,网络配置可能会导致访问问题。您可以尝试使用代理或调整网络配置以查看是否对问题有影响。

以上方案中,第一种方法是官方推荐的最佳做法,可以尽量保证脚本的稳定性和可维护性。如果仍然存在问题,可以尝试第二种方法来排除环境或配置相关的问题。

正文完