通过Python脚本+Jekins实现项目重启

news2024/11/24 14:59:24

文章目录

  • 一、需求
  • 二、分析
  • 三、实现
    • 公共代码
    • 单个服务版本
      • 1、写死某个服务
      • 2、支持服务单选
    • 多服务版本
    • 最终实现效果
    • 将Python程序转换为桌面可执行文件(.exe)

一、需求

微服务项目,服务很多,重启服务,基本都是通过Jekins进行发布,过程差不多如下:
1、登录后台,选择环境和服务,如下图:
在这里插入图片描述
2、点击“Build_with_Parameters”,弹出窗口,选择分支,然后点击“开始构建”,如下图:
在这里插入图片描述
通过上面的操作,就会进入构建队列排队,如果系统没有正在构建的,很快就可以在构建执行状态中看到,受到Maven项目配置的执行者数量的限制,如下图,公司限制的是同一时间只能有3个在构建中
在这里插入图片描述
所以,当需要重启很多个服务时,需要每个都去重复上面的步骤,选环境-》选服务-》Build_with_Parameters-》选分支-》开始构建,贼麻烦,很影响效率,这也是我写这篇文章的原因,下面和大家分享下我的解决方案

二、分析

其实上面最终就是触发构建动作,就是选择了分支后,点击开始构建,这里应该是调用了相关API,然后传参就是分支,顺着这个思路,我们去看看调用了什么接口,发现页面看不到调用了什么接口,这就可能需要去找官方文档了,看看有没有什么说明,使用过Python的同学应该知道,里面提供了强大的类库,其中就包括了jenkinsapi,可以直接使用

三、实现

公共代码

# jekins地址和请求参数
jenkins_url = 'http://xxx.xx.xxx.xxx:端口号'
parameters = {'BRANCH': 'origin/dev-test-common'}


def build_job_with_parameters(jenkins_url, job_name, parameters):
    jenkins = Jenkins(jenkins_url, username='forlan', password='forlanxxx')
    job = jenkins[job_name]
    return job.invoke(build_params=parameters)

单个服务版本

1、写死某个服务

def baseWay():
    job_name = 'Test-forlan'
    print(build_job_with_parameters(jenkins_url, job_name, parameters))

2、支持服务单选

options = [
    "Test-forlan1",
    "Test-forlan2",
    "Test-forlan3"
]


def oneChoiceWay():
    while True:
        for i, option in enumerate(options):
            print(f"{i}: {option}")
        choice = int(input("Enter your choice : "))

        if choice >= 0:
            print(options[choice], "重启中")
            print(build_job_with_parameters(jenkins_url, options[choice], parameters))
        elif choice == -1:
            break
        else:
            print("Invalid choice. Please try again.")
        print("----------------------------------\n")

    print("Loop exited.")

多服务版本

options = [
    "Test-forlan1",
    "Test-forlan2",
    "Test-forlan3"
]


def moreChoiceWay():
    exitFlag = False
    while True:
        for i, option in enumerate(options):
            print(f"{i}: {option}")
        choiceStr = input("Enter your choices(split by ',') : ")
        choices = choiceStr.split(',')

        for choice in choices:
            choice = int(choice)
            if choice >= 0:
                print(build_job_with_parameters(jenkins_url, options[choice], parameters))
            elif choice == -1:
                exitFlag = True
                break
            else:
                print("Invalid choice. Please try again.")
        print("----------------------------------\n")

        if (exitFlag):
            break

    print("Loop exited.")

最终实现效果

0: Test-forlan1
1: Test-forlan2
2: Test-forlan3
Enter your choices(split by ',') : 1,2
Test-forlan2 重启中
Test-forlan3 重启中
----------------------------------

0: Test-forlan1
1: Test-forlan2
2: Test-forlan3
Enter your choices(split by ',') : -1
----------------------------------

Loop exited.

将Python程序转换为桌面可执行文件(.exe)

安装pyinstaller库

pip install pyinstaller

安装完毕后,使用以下命令将Python程序转为exe文件:

pyinstaller jekins.py

这将在当前目录下生成dist文件夹,并在其中包含可执行的exe文件。完成后,可以在桌面上找到生成的exe文件,双击运行即可,效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1067530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务】RedisSearch 使用详解

目录 一、RedisJson介绍 1.1 RedisJson是什么 1.2 RedisJson特点 1.3 RedisJson使用场景 1.3.1 数据结构化存储 1.3.2 实时数据分析 1.3.3 事件存储和分析 1.3.4 文档存储和检索 二、当前使用中的问题 2.1 刚性数据库模式限制了敏捷性 2.2 基于磁盘的文档存储导致瓶…

数学题目大合集 1

文章目录 建议这个题目集适合什么人?小剧场题目集M 题目 1算式法 1法 2M 题目 2算法分解质因数因数个数因数和因数积倒数和答M 题目 3算式解析HM 题目 4算式复习分解(利用“简单”数学)解析总结反馈建议 码字不易,还望关注点赞鼓励! 每个数学题目大合集都有 4 道题,题目…

【计算机网络】你真的懂学校的校园网吗?

【计算机网络】你真的懂学校的校园网吗? 第一步:从了解本机的ip开始 ip地址ip地址的分类公用地址和私有地址 查看本机ip 第二步:向上追溯,查看宿舍的路由器 路由器路由器的两个物理接口路由器用到的协议 分析宿舍路由器WAN口设置 …

linux系统篇(二).之Systemd机制

一、system介绍 systemd配置文件 systemd中这些资源分别代表着不同的单元(Unit)。systemd 总共有 11 种不同类型的“单元”。单元封装了与系统启动和维护相关的各种对象。systemd通过这些Unit的配置文件,知道怎么启动这些Unit。 提供以下单位…

为什么建议你考一个pmp项目管理证书?

先说一下,不是建议所有人考pmp,毕竟也不是所有人都做项目管理这一行,主要是项目管理人士(PMI提出的pmp目标人群),大概如下几类: 项目小白,想进入项目管理行业,可在招聘上…

JDBC和GUI实现图书管理系统

1.介绍 主要通过gui页面实现了与mysql数据库实现交互,跟以前写的图书管理系统相比就是从存在集合中变成了存在数据库中. 下面我来介绍一下主要功能吧: 1.1.通过基本信息添加图书: 1.2.通过ID修改图书 1.3.通过ID查询图书 1.4.通过ID删除图书 2.构建数据库 2.1建库 …

深圳市重点实验室申报要求-华夏泰科

深圳市重点实验室,以开展基础研究、应用基础研究、前沿技术研究,培养人才、支撑产业和社会发展为目标而建立。它为研究人员提供了一个独特的平台,提供了一个展示他们创新性研究的舞台。本文将深入探讨如何申报深圳市重点实验室,为…

VS2022配置Opencv

配置环境变量 配置路径 由于新版本VS属性管理器没有Microsoft.cpp.x64.user文件,可以选择直接在Debug x64进行配置 配置包含目录和库目录 配置链接器

SpringCloud(三)Sentinel、Seata、多级缓存

文章目录 Sentinel雪崩问题Sentinel与Hystrixsentinel使用案例限流规则流控模式流控效果热点参数限流 隔离和降级Feign整合Sentinel线程隔离熔断降级 授权规则与规则持续化自定义异常结果规则管理模式 Seata分布式事务问题理论基础CAP定理BASE理论 Seata架构部署TC服务微服务集…

KylinOSv10系统k8s集群启动mysql5.7占用内存高的问题

问题现象 麒麟系统搭建k8s集群 mysql的pod启动失败 describe查看ommkill,放大limit资源限制到30G依旧启动失败 系统 报错信息 原因 内存占用太高 open_files_limit初始化太高 解决: 1、更换镜像 链接: https://pan.baidu.com/s/1b9uJLcc5Os0uDqD1e…

使用vue-cli创建vue3工程

PS:创建前先查看 vue/cli 版本,确保 vue/cli 版本在4.5.0以上 如果不是4.5.0以上版本,可以通过如下命令进行 安装/升级: npm install -g vue/cli 创建vue3工程步骤如下: 1. 创建项目: ①选择存放项目的…

3DShape2VecSet主题论文集

一、3DShape2VecSet 1、论文信息 2、开源情况:已开源 3DShape2VecSet: A 3D Shape Representation for Neural Fields and Generative Diffusion Modelsg3DShape2VecSet: A 3D Shape Representation for Neural Fields and Generative Diffusion Modelshttps://1z…

车载网络诊断应如何测试?

文章目录 一、前言二、测试内容三、测试设备和台架方案四、测试脚本及工程五、其他一、前言 目前车上主流的网络有CAN、LIN、ETH(以太网)。 按照测试环境可以划分为单件测试,系统测试,整车测试。 我们来看下CAN和以太网的分层图: CAN的分层图: 以太网的分层图: 最好的…

《第一行代码Andorid》阅读笔记-第十三章(最终章)

这一部分是天气API的笔记,这本书最后会让你做一个天气的app程序 其他的无关紧要的部分我就不写了,这是因为我原本的笔记是在飞书上面的,同步到CSDN上的流程稍显复杂 天气API 1. 项目结构 类: MainActivity:主活动Wea…

Echarts热力/散点/面积地图和高德amap不得不说的故事

简单封装高德amap 只要涉及到地图开发,我们都需要依赖地图工具,常见的有谷歌地图、百度地图、高德地图。我们的项目里依赖高德地图JS API 2.0。 npm i amap/amap-jsapi-loader -s 在项目里,我们需要一个预加载好的地图loader方便我们随调随…

【消费战略】解读100个食品品牌|速溶咖啡精品化,“三顿半”承接强势需求!

可可,咖啡、茶饮,作为世 界三大饮料,被人们所熟知。一直以来,咖啡都被人们认定为是舶来。其实,中国的咖啡市场经过这么多年的培育和发展,已不同往昔。就拿上海来说,根据2021年《上海咖啡消费指数…

【算法】算法设计与分析 课程笔记 第三章 动态规划

1.1 动态规划简介 1.1.1 引例 动态规划算法和分治法类似,基本思想也是将待求解问题分解成若干个子问题,子问题可以以继续拆分,直到问题规模达到临界条件即可。多说无益,举个例子来解释一下: 这其实是一个多阶段图求最…

python 打包可执行文件-Nuitka详解

python 打包可执行文件-Nuitka详解 引言一、参数详解二、与pyinstaller对比三、打包总结 引言 Nuitka是用Python编写的优化Python编译器,它可以创建运行时不需要单独安装程序的可执行文件。简单易使用,与Python2(2.6、2.7)和Pyth…

3d环形图开发(vue3+vite+ts)

开发效果&#xff08;待完善&#xff09;&#xff1a; 技术支持&#xff1a; Echarts echarts-gl 安装&#xff1a; 注&#xff1a;echarts与echarts-gl版本需对应&#xff0c;可参考官网 pnpm add echarts4.9.0 echarts-gl1.1.2 组件封装&#xff1a; <template><…

unity操作_Camera c#

观察场景中Main Camera 的清除背景Clear Flags 第一种&#xff1a;Skybox天空盒渲染 制作3D游戏使用 第二种&#xff1a;Solid Color 制作2D游戏 第三种&#xff1a;Depth only 多个摄像机叠加渲染 相对重点学会多个摄像机设置Depth only使…