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())
相关推荐
iAm_Ike3 小时前
Go 中自定义类型与基础类型间的显式类型转换详解
jvm·数据库·python
iuvtsrt3 小时前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】
jvm·数据库·python
DianSan_ERP4 小时前
如何通过抖店订单接口实现订单状态管理与履约自动化?
运维·自动化
旦莫4 小时前
AI驱动的纯视觉自动化测试:知识库里应该积累什么知识内容
人工智能·python·测试开发·pytest·ai测试
b***25114 小时前
18650电池点焊机:电阻焊技术如何决定电池组的成败|深圳比斯特自动化
运维·自动化
知识领航员5 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
如何原谅奋力过但无声6 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
deephub7 小时前
2026 RAG 选型指南:Vector、Graph、Vectorless 该怎么挑
人工智能·python·大语言模型·rag
迁移科技8 小时前
AI+3D视觉赋能铝制静盘自动化上下料,破解反光堆叠难题
人工智能·3d·自动化
凤舞飘伶8 小时前
jenkins问题处理方法
jenkins