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())
相关推荐
风早爽太8 分钟前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
李航19831 小时前
给自己的图形引擎,配上了AI渲染,做设计真是太方便了
人工智能·python·计算机视觉·ai·ai编程
L@ncor1 小时前
第六章 框架开发实践 · 学习笔记(AutoGen / AgentScope / CAMEL / LangGraph)
python·框架·autogen·langgraph·agentscope
Zhou1411361 小时前
SpringSecurity_02_授权与高级功能
开发语言·python
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python
小小小小钰儿3 小时前
1.5-Python网络编程
开发语言·网络·python·web安全·计算机·网络安全
keke.shengfengpolang3 小时前
2026年金融风控岗技术能力拆解:SQL取数、Python建模、评分卡项目,校招面试到底考什
python
kyrie_sakura4 小时前
大模型学习7 -- 深度学习2 -- 张量
python·深度学习
智鸟科技GemeOpen开发者智能设备4 小时前
智能插座二次开发如何接入Home Assistant,从零开始完整工程实现(Python+React)
开发语言·python·物联网·react.js·智能家居