前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python】:自动化部署??Python 也是可以的!!

【Python】:自动化部署??Python 也是可以的!!

作者头像
WEBJ2EE
发布于 2023-09-02 02:07:48
发布于 2023-09-02 02:07:48
43800
代码可运行
举报
文章被收录于专栏:WebJ2EEWebJ2EE
运行总次数:0
代码可运行

提要

哈喽,大家好!

有没有还在每天都手动打包、部署应用的小伙伴?如果你暂时还切换不到 Jenkins 或 Docker,那可以考虑考虑 Python 哟。

TL;DR

* subprocess:用于执行本地 CMD 命令

* Fabric:用于 SSH 连接远程服务器

* webbrowser:用于打开本地浏览器

一、背景

持续集成持续部署,业界已经有很多成熟、可靠的工具可以使用,例如:Jenkins、Docker、GitLab CI/CD、CircleCI、Travis CI等等。

如果你手边恰好有这些专业的工具,而且你恰好也擅长使用这些工具,那很好。

本文提供了一种思路,在你手边没有那些专业工具或者你暂时还不想接触那些专业工具的时候,也能帮你从繁琐的打包、部署工作中解放出来。

Python 就是个很好的选择。

二、为什么打包、部署很繁琐?

场景1:打包、部署基于 Webpack、React 的前端应用;

每完成一个新功能或每修正一个bug,就需要:

  1. npm run build:在本地对项目进行构建;
  2. tar:将构建结果(dist)压缩为 tar 包;
  3. sftp:上传 tar 包到远程服务器;
  4. ssh:在远程服务器上,停止运行中的旧应用;启动新应用;
  5. browser:打开浏览器,看升级是否成功;

场景2:打包、部署基于 Maven、SpringBoot 的后端应用;

每完成一个后新功能或每修正一个bug,就需要:

  1. mvn clean package:在本地对项目就行构建;
  2. sftp:上传构建结果(jar)到远程服务器;
  3. ssh:在远程服务器上,停止运行中的旧应用;启动新应用;
  4. ssh:查看启动日志,观察启动是否成功;
  5. brower:打开浏览器,看升级是否成功;

上面这两个场景,每天都需要重复进行很多次

emmm...

而且:

某一条命令记不清了...可能需要百度一下...

某一环操作失误了...可能得重新来一次...

远程服务器密码忘了...可能得查查...

...

三、本地 CMD 执行:subprocess

subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。

subprocess 模块首先推荐使用的是它的 run 方法,更高级的用法可以直接使用 Popen 接口。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def npm_build(prj_path):
    subprocess.run([r'C:\Program Files\nodejs\npm.cmd', 'run', 'build'], cwd=prj_path)

三、远程 SSH 执行: Fabric

3.1. Paramiko?Fabric?

  • paramiko 是基于Python实现的 SSH2 远程安装连接,支持认证及密钥方式。可以实现远程命令执行,文件传输,中间SSH代理等功能。
  • Fabric在 paramiko 的基础上做了更高一层的封装,简化了 SSH 的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程 shell 命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。

很显然,我们应该用 Fabric 进行 SSH 操作。

3.2. 上传文件到远程服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def sftp_upload(local_file_path, remote_file_path):
    print('uploading [%s] to [%s] ...' % (local_file_path, remote_file_path))
    with fabric.Connection(host=hostname, user=username, connect_kwargs={'password': password}) as c:
        c.put(local_file_path, remote_file_path)
    print('done.')

3.3. 在远程服务器上执行命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def ssh_exec(cwd, cmd):
    with fabric.Connection(host=hostname, user=username, connect_kwargs={'password': password}) as c:
        with c.cd(cwd):
            r = c.run(cmd, encoding='utf-8')
            print(r)

四、本地浏览器:webbrowser

webbrowser 模块提供了一系列接口,用于控制用户的默认浏览器,以及调用系统默认浏览器打开网页或文件。

API

只需要很简单的封装:

参考:

subprocess — Subprocess management: https://docs.python.org/3/library/subprocess.html#module-subprocess Paramiko: https://github.com/paramiko/paramiko Fabric: https://github.com/fabric/fabric https://docs.fabfile.org/en/stable/ webbrowser: https://docs.python.org/3/library/webbrowser.html?highlight=webbrowser#module-webbrowser


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
10级商用版Kettle作业调度工具taskctl免费开源
taskctl是一款由成都塔斯克信息技术公司历经10年研发的etl作业集群调度工具,该产品概念新颖,体系完整、功能全面、使用简单、操作流畅,它不仅有完整的调度核心、灵活的扩展,同时具备完整的应用体系。目前已获得金融,政府,制造,零售,健康,互联网等领域1000多家头部客户认可。
TASKCTL 任务调度平台
2020/06/29
2.4K0
10级商用版Kettle作业调度工具taskctl免费开源
深入浅出的etl调度工具TASKCTL
批量调度自动化技术是大数据时代数据整合后台不可缺少的重要技术。数据是黄金,数据是整个社会乃各企业团体的重要资产,管好数据、用好数据是整个社会的重要命题。想要用好数据,首先就应该管好数据。而批量调度自动化技术,正是管好数据的重要保证。在众多大大小小数据仓库、数据集市以及各种各样的数据池子中,是批量调度自动化技术让大量数据的进出、存放、清洗、过滤、粗加工、细加工等各种各样的工作有序、高效的展开。没有批量调度自动化的数据管理、数据整合等ETL工作,就像一家大公司没有领导,所有工作必将变得紊乱、低效、失控。
TASKCTL 任务调度平台
2020/06/09
1.7K0
深入浅出的etl调度工具TASKCTL
【国产】大数据ETL自动化调度运维专家TASKCTL
批量调度自动化技术是大数据时代数据整合后台不可缺少的重要技术。TASKCTL 是一款企业级免费批量调度系统,支持各类脚本、程序的调度。具备可视化图形拖拽式设计界面,可视化作业管控、计划调度、实时监控、消息提醒和日志分析功能;有效弥补了传统ETL工具在调度管理和监控分析方面不足;同时平台还提供元数据管理、数据关系分析、版本控制、日志分析等完善的辅助管理功能,为企业提供数据迁移、数据仓库、数据标准化、数据同步、数据备份、数据交换以及企业定制化二次开发在内的一体化整合服务。
TASKCTL 任务调度平台
2022/05/27
1K0
【国产】大数据ETL自动化调度运维专家TASKCTL
【开源】etl作业调度工具性能综合对比
最近遇到了很多正在研究ETL及其工具的伙伴向我们抱怨:同样都在用 Kettle ,起点明明没差异,但为什么别人ETL做的那么快那么好,自己却不断掉坑?
TASKCTL 任务调度平台
2020/06/22
2.1K0
【开源】etl作业调度工具性能综合对比
金融服务业etl作业集群统一调度平台搭建
批量处理是银行业整个信息后台最为重要的技术形态,也是银行核心信息资产数据的分享、传输、演化的重要技术手段。有调查指出,全球70%的数据是经过批量处理得以再次使用,可见批量处理在整个信息生态中的技术占比与重要行。
TASKCTL 任务调度平台
2020/06/18
2.1K0
分布式批量任务调度、自动化运维管理监控平台Taskctl
前言 随着企业拥抱数字化程度的提高,数据是企业的发展关键。数据的需求来源于业务也服务于业务,数据的挖掘、探索、分析、个性化推荐、报表等等都依托于数据的输送、转换和写入。数据的调度就是作业的调度。批量作业调度是金融行业信息后台最为重要的技术形态。
TASKCTL 任务调度平台
2021/01/11
2.4K0
【开发者推荐】告别繁琐:一键解锁国产 ETL 新贵,Kettle 的终结者
TASKCTL 是一款免费、国产的ETL调度工具。以其实时数据集成、全 WEB 可视化操作、高性能和对国产数据库的深度支持,迅速成为市场的新选择。
TASKCTL 任务调度平台
2024/07/02
3450
【开发者推荐】告别繁琐:一键解锁国产 ETL 新贵,Kettle 的终结者
10万级etl作业批量调度工具Taskctl之轻量级Web应用版
批量处理是银行业整个信息后台最为重要的技术形态,也是银行核心信息资产数据的分享、传输、演化的重要技术手段。有调查指出,全球70%的数据是经过批量处理得以再次使用,可见批量处理在整个信息生态中的技术占比与重要性。
TASKCTL 任务调度平台
2020/11/30
7950
10万级etl作业批量调度工具Taskctl之轻量级Web应用版
中美两国10万级作业调度工具 "TaskCtl" Vs "Control-M" 如何选用
先说说PK方法:这两款软件都宣称企业级调度软件,我们就先从软件企业级特征方面PK,随后从软件功能点进行PK,最后,PK最关键的东东-用户体验!
TASKCTL 任务调度平台
2020/07/08
1.4K0
中美两国10万级作业调度工具 "TaskCtl" Vs "Control-M" 如何选用
etl作业部署与调度——taskctl管理概述
TASKCTL是一款功能全面的作业自动化调度技术管理工具。所谓作业,是指部署在网络中不同计算机上的各种程序或系统命令。通过TASKCTL,可以快速将这些作业组织起来,并进行有效的管理以及各种参数化运行控制。在业界,普遍将这种技术称为作业调度,其技术本质是作业运行管理的自动化控制。
TASKCTL 任务调度平台
2020/06/16
1K0
etl作业部署与调度——taskctl管理概述
Docker应用实例解析:如何与TASKCTL携手,助力商业银行运维革新
在数字化转型的浪潮中,商业银行的运维工作面临着前所未有的挑战和机遇。我们迎来了一个全新的运维时代——自动化运维。大家希望能够拥有一种工具,能够简化任务、提升效率,同时保障系统的安全稳定。今天,我想和大家聊聊 Docker 这一容器化技术,以及它是如何与 TASKCTL 这一自动化运维工具携手,共同助力商业银行运维革新的。
TASKCTL 任务调度平台
2024/05/27
1040
Docker应用实例解析:如何与TASKCTL携手,助力商业银行运维革新
这些常用ETL批量调度平台框架组件,你都知道几个?
一个基于Python,提供类似Cron功能,并深受Java Quartz 影响的轻量级进程内任务调度框架。
TASKCTL 任务调度平台
2021/01/06
1.3K0
这些常用ETL批量调度平台框架组件,你都知道几个?
etl调度工具Taskctl——稳定强大web版“0元授权”
2020年疫情席卷全球,更是对整个市场经济造成了严重影响,年初疫情肆虐,西方世界单方面的科技、经济封锁,国际关系吃紧.....导致很多中小型企业业务链受阻,大型企业经费资金吃紧,轮班制导致公司运维人员工作量大幅增加;塔斯克信息技术公司经领导研究决定为了履行社会责任,积极回报社会,帮助在此疫情期间受影响的企业减少运维资金支出、提升工作效率、保证后台数据安全,工作需求场景能够应用到的ETL批量作业调度工具的,为此公司技术团队集中人力耗时6个月在原有商用版Taskctl 6.0衍生出现有的web端 Taskctl Free应用版
TASKCTL 任务调度平台
2020/11/13
9730
etl调度工具Taskctl——稳定强大web版“0元授权”
【国产】自动化IT运维监控平台TASKCTL五种运行统计分布情况
柱状图展示平台作业在一天内,以每两小时为跨度,各个时段运行分布情况和峰值区域。帮助用户分析当天哪些时段的业务处理繁忙,从而优化业务处理的时间窗口。
TASKCTL 任务调度平台
2022/05/23
5820
【国产】自动化IT运维监控平台TASKCTL五种运行统计分布情况
国产自动化ETL调度运维工具 TASKCTL 控制容器概述
在产品中,控制信息主要通过具有一定规则的文本实现,且该文本信息直接面向用户设计开发。因此,掌握该文本信息的组织规则是设计 TASKCTL控制器的根本前提。
TASKCTL 任务调度平台
2022/04/28
7820
国产自动化ETL调度运维工具 TASKCTL 控制容器概述
国产数据仓库常用ETL调度平台TASKCTL对于Kettle作业类型的转换使用
TASKCTL默认采用pan命令方式调度kettle转换作业。除此之外,我们还提供了taskctl-plugin-kettle(Soap服务)插件的方式驱动kettle转换。相比原生的pan命令,Soap服务直接驱动kettle核心进行调度。资源消耗更低、速度更快,支持高并发。
TASKCTL 任务调度平台
2022/05/30
1.1K0
国产数据仓库常用ETL调度平台TASKCTL对于Kettle作业类型的转换使用
宜信微服务任务调度平台建设实践|分享实录
导读:如今,无论是互联网应用还是企业级应用,都充斥着大量的批处理任务,常常需要一些任务调度系统帮助我们解决问题。随着微服务化架构的逐步演进,单体架构逐渐演变为分布式、微服务架构。
宜信技术学院
2019/10/22
1.2K0
详解ETL银行数据仓储抽取和加载流程概述
ETL是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合:
TASKCTL 任务调度平台
2020/07/15
2.5K0
企业任务调度解决方案:Airflow vs TASKCTL 深度剖析
在实际系统运维工作中,Airflow 和 TASKCTL 都是强大的任务调度工具,但它们在功能、安全性、技术架构和应对压力方面各有特点。以下是我对两者的对比:
TASKCTL 任务调度平台
2024/07/09
3170
企业任务调度解决方案:Airflow vs TASKCTL 深度剖析
破多品类AGV混合调度“难点”,打通数智化“堵点”,磅旗ADS+LDS赋能智能制造提质升级!
由于制造业生产的离散性,企业初期导入自动化系统只是解决单场景的需求,缺乏统一的顶层设计、统筹规划,信息孤岛现象、上下工序没有智能协同需要人工介入、单点去人化、断点自动化等现象普遍存在。
老King
2023/11/30
8240
破多品类AGV混合调度“难点”,打通数智化“堵点”,磅旗ADS+LDS赋能智能制造提质升级!
推荐阅读
相关推荐
10级商用版Kettle作业调度工具taskctl免费开源
更多 >
LV.1
成都塔斯克信息技术有限公司运营经理
目录
  • 一、背景
  • 二、为什么打包、部署很繁琐?
  • 三、本地 CMD 执行:subprocess
  • 三、远程 SSH 执行: Fabric
    • 3.1. Paramiko?Fabric?
    • 3.2. 上传文件到远程服务器
    • 3.3. 在远程服务器上执行命令
  • 四、本地浏览器:webbrowser
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档