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())
相关推荐
小鹿研究点东西2 分钟前
AI直播工具实操:从直播录制、AI剪辑去重到直播伴侣开播完整流程
人工智能·自动化·音视频·语音识别
青山如墨雨如画1 小时前
【北邮-无线通信中的人工智能】物理层技术中AI的应用实践:基于KNN的调制识别(1)理论基础
人工智能·python·机器学习·matlab·jupyter
MATLAB代码顾问1 小时前
Python Matplotlib数据可视化实战指南
python·信息可视化·matplotlib
AI 编程助手GPT1 小时前
用 Python 做一个世界杯赛前分析脚本:以巴西 vs 摩洛哥为例
开发语言·网络·人工智能·python·chatgpt
万事大吉CC2 小时前
Python 笔试输入模板总结
python·算法
Java患者·2 小时前
《Python 人脸识别入门实践:从人脸检测到人脸比对完整实现》
开发语言·python·opencv·目标检测·计算机视觉·目标跟踪·视觉检测
志栋智能2 小时前
超自动化巡检剧本(Playbook):运维经验的数字化封装
运维·自动化
北京耐用通信2 小时前
国产化替代优选!耐达讯自动化NY-HUB6完美兼容替代PB-HUB6\GL
人工智能·科技·网络协议·自动化·信息与通信
宸丶一2 小时前
Day 10:LangGraph - Agent 的图执行引擎
java·windows·python
weixin_307779132 小时前
Python写入Shell文件使用Linux系统的换行符
linux·开发语言·python·自动化