Python实现Jenkins实现自动化执行Job

Jenkins实现自动化执行Job

jenkins_url job地址

username 用户名

api_token 去jenkins设置中生成一个

job_dict中 name自己起个名字, name为jenkins中的job_name,http为该job_name对应的网址

看到执行成功后,则触发对应的含参数job

需要安装python库jenkinsapi 接口可参考该网站:http://pycontribs.github.io/jenkinsapi/

python 复制代码
from jenkinsapi import jenkins
import requests
job_dict = {"name": ['job_name"', 'http:XXX']}

class JenkinsApi:
    def __init__(self, job_name, data=None):
        self.jenkins_url = "http:XXX:8080"
        self.username = "XXX"
        self.api_token = ""
        self.server = jenkins.Jenkins(self.jenkins_url, self.username, self.api_token, use_crumb=True)
        self.build_num = 0
        self.job_name = job_name
        self.data = data
        self.build_job()

    def build_job(self):
        # 1. 获取CSRF令牌
        crumb_url = f"{self.jenkins_url}/crumbIssuer/api/json"
        auth = (self.username, self.api_token)
        crumb_response = requests.get(crumb_url, auth=auth)
        crumb_data = crumb_response.json()

        # 2. 准备构建请求
        build_url = job_dict[self.job_name][1]
        headers = {
            crumb_data['crumbRequestField']: crumb_data['crumb'],
            "Content-Type": "application/x-www-form-urlencoded"
        }

        self.build_num = self.server[job_dict[self.job_name][0]].get_next_build_number()

        response = requests.post(
            build_url,
            headers=headers,
            auth=auth,
            data=self.data  # 关键修改:使用data而非params
        )

        if response.status_code == 201:
            print("{0}构建已成功触发".format(self.job_name))
        else:
            print(f"构建触发失败,状态码: {response.status_code}")
            print(f"响应内容: {response.text}")
            raise Exception("构建触发失败")

    def build_status(self):
        return self.server[job_dict[self.job_name][0]].get_build(self.build_num).get_status()


if __name__ == "__main__":
    server = JenkinsApi("name")
    print(server.build_status())
相关推荐
智慧物业老杨15 分钟前
物业绿化数智化权责管控方案:基于工单平台的双层权限追溯模块落地实践
python
曦尧19 分钟前
InfiniteTalk:音频驱动的无限时长说话视频生成框架
ai·自动化
wenzhangli71 小时前
oodAgent 4.0 Skills分布式调度 — 从Code Agent实战看自主维护的Agent网络
运维·网络·人工智能·自动化
Metaphor6921 小时前
使用 Python 在 Word 文档中添加批注
python·word
FreakStudio1 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
会周易的程序员1 小时前
使用 pybind11 封装 C++ 日志库 microLog 为 Python 模块
java·c++·python·物联网·架构·日志·aiot
K姐研究社1 小时前
OiiOii 2.0 实测 – 智能画布实现 AI 视频创作自动化
运维·人工智能·自动化
一只专注api接口开发的技术猿2 小时前
电商评论自动化监控与情感数据分析完整落地教程(附可直接运行 Python 代码)
大数据·数据库·python·数据分析·自动化
HAPPY酷2 小时前
【ROS2】 Conda 环境搭建(命令行版)
linux·运维·python·ubuntu·机器人·conda
大侠锅锅2 小时前
第 3 篇:节点自动化纳管——从裸机到可管理的 7 步安装流水线
数据库·自动化·边缘计算·iot