首页 > 其他分享 >py调jenkins接口发布并通知

py调jenkins接口发布并通知

时间:2022-09-19 22:23:24浏览次数:72  
标签:name py 接口 server import print jenkins parameter

py调jenkins接口发布并通知   这个需求是我自己给自己安排的,因为每到工作日,基本晚上10点后都要我进行发布(10点后会自动关停系统,直到第二天7点)。天天要我发,老实说,不胜其烦,所以周末在思考,然后写了雏形,今天小改下,就能跑了。   只能说,这个python脚本比较拙劣,刚好满足基本需求,后续需要完善的地方比较多。 脚本思路:

 环境准备:python3.6,需要安装jenkins相关模块

pip3 install python-jenkins jenkinsapi

 

 

 三大组成:获取jenkins操作对象,构建任务并获取结果状态,发钉钉通知

#!/usr/bin/python3.6
#coding=UTF-8

'''
输入:jenkins服务器的地址,用户名和密码
输出:已构建任务的状态
'''

import datetime, time
import jenkinsapi
import jenkins

import json
import sys
import requests

from jenkinsapi.jenkins import *
from jenkinsapi.job import *
from jenkinsapi.build import Build

'''
   1、获取jenkins操作对象
'''

def jenkins_get_server():
    print("start to get")
    url = "jenkins地址" 
    username='jenkins登录名'
    password='jenkins登录密码'
    #实例化jenkins对象,连接远程的 jenkins master server
    server = jenkins.Jenkins(url, username, password)
    return server


'''
  2、构建任务,获取任务构建状态
'''

def jenkins_get_jobbuildstat():
    server = jenkins_get_server()
  
    name = '要发布的任务名' 
    param_dict = {'BRANCH': 'main'}
    server.build_job(name, parameters=param_dict)

    # 构建任务: 不加参数跑不动--原因未知    
    # server.build_job('要发布的任务名')
    
    # 等4分多钟后,获取任务构建状态--人为观察总结
    time.sleep(250)
    
    lastbuildNumber=server.get_job_info(name)['lastBuild']['number']
    print(lastbuildNumber)
    job_status = server.get_build_info(name,lastbuildNumber)['result']
    print(job_status)


    # 返回构建任务的状态
    if job_status == 'SUCCESS':
        msg = 'xxx:构建成功' 
        print("最近一次,xxx,构建成功")
    else:
        msg = 'xxx:构建失败, 请检查!'
        print("最近一次,xxx,构建失败!")
     
    send_msg(msg)
   
     
'''
  3、钉钉通知

'''
def send_msg(text):
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    api_url = "钉钉机器人url"
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                "加一的手机号码"
            ],
            "isAtAll": False
        }
    }
    result = requests.post(api_url,json.dumps(json_text),headers=headers).content
    print(result)

   
jenkins_get_jobbuildstat()

 运行结果:

 

最后贴一个获取jenkins任务参数的函数,我觉得蛮有用的,传参构建任务可能会用到

def Url_Get_Job_List(url='jenkins地址', username='jenkins登录用户', password='jenkins登录密码'):
    server = jenkins.Jenkins(url, username, password)

    name = "构建任务名"
    build_arg = server.get_job_info(name)['property']

    for parameter_definitions in build_arg:
        if len(parameter_definitions) > 1:
            for parameter in parameter_definitions["parameterDefinitions"]:
                print('----------------------------------')
                print('name: %s' % parameter["name"])
                print('class: %s' % parameter["_class"])
                print('type: %s' % parameter["type"])
                print('description: %s' % parameter["description"])
                print('jenkins_arg: %s' % parameter["defaultParameterValue"]["name"])
                print('default_value: %s' % parameter["defaultParameterValue"]["value"])
                if parameter["_class"] == 'hudson.model.ChoiceParameterDefinition':
                    print('can_choices: %s' % parameter["choices"])
                    print('----------------------------------')

Url_Get_Job_List()
View Code 参考:http://t.zoukankan.com/L-O-N-p-11608220.html

标签:name,py,接口,server,import,print,jenkins,parameter
From: https://www.cnblogs.com/windysai/p/16709313.html

相关文章

  • Python 代码智能感知 —— 类型标注与特殊的注释(献给所有的Python人)
    【原文地址:https://xiaokang2022.blog.csdn.net/article/details/126936985】​一个不会写好的类型标注和注释的Python程序员,是让使用TA的代码的人都痛苦无比的事情…......
  • Python查看文件各个时间
    importos,timefilePath='test.txt'#获取文件创建时间戳print(os.path.getctime(filePath))#获取文件的修改时间戳print(os.path.getmtime(filePath))#获取文......
  • python在vscode中的调试--
    如果你使用fromnumpyimport*调试时会把numpy库包含的包都给调试了,产生很多不必要的调试信息如果你只从库中导出你需要的包,会产生更加干净的调试信息比如说你只用了......
  • pytorch学习
    #https://blog.csdn.net/qq_27825451/article/details/90705328#https://blog.csdn.net/qq_27825451/article/details/90550890"""1.torch.nn.Module的基本属性tor......
  • Jenkins Pipeline项目实战
    一、项目流程 Jenkins从git拉取指定tag代码Jenkins构建代码、镜像以及推送镜像到镜像库Jenkins通过PublishOverSSH通知远程服务器拉取镜像、远程服务器通过镜像启......
  • Python获取以前的日期或以后的日期
    importdatetimefromdateutil.relativedeltaimportrelativedeltat=datetime.datetime.now()#当前日期d=datetime.date.today()print(d)#1天前d1=d-rel......
  • python+ mplfinance实现全功能动态交互式K线图
    在网上找的资料,但没有数据,于是根据代码自己造了一些,发现跑起来太卡了,放弃#coding=utf-8#inter_candle.pyimportpandasaspdimportnumpyasnpimportmatplotli......
  • python 字符串倒序
    #面试题:给你一个字符串,请将这个字符串翻转。name="生活不是电影,生活比电影苦"-->答案在底部,看答案前先思考哦              value=......
  • python 数据类型之整型,布尔,字符串
    python数据类型包含以下几种-int,整数类型(整形)-bool,布尔类型-str,字符串类型-list,列表类型-tuple,元组类型-dict,字典类型-set,集合类型-float,浮点类型(浮点型)1.整型--......
  • python格式化输出输出数据到json文件
    input_python={'n_layer':n_layer,'L':L,'Emm':Emm,'mu':mu,'h':h,'P':P,'Q':......