jenkins 自动化部署执行shell
# -*- coding:utf-8 _*-
"""
@author:Administrator
@file: new_app_publish.py
@time: 2018/08/29
"""
import paramiko
import sys
class AppPush(object):
def __init__(self, project, ip="", user="devroot", pwd="", port=22, ):
self.ip = ip
self.port = port
self.user = user
self.pwd = pwd
self.project = project
# self.connect_server()
def connect_server(self):
paramiko.util.log_to_file('ssh.log') # 使用paramiko记录日志
self.s = paramiko.SSHClient() # 绑定一个实例
self.s.load_system_host_keys() # 加载known_hosts文件
self.s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 远程连接如果提示yes/no时,默认为yes
self.s.connect(self.ip, self.port, self.user, self.pwd, timeout=5)
return True
def get_projetct_name(self):
pro_list = ["applicationRouter",
"businessService",
"customerApp",
"transferService",
"memberService",
"pushCenter",
"configServer"]
assert self.project in pro_list, "project must be applicationRouter,businessService,customerApp," \
"transferService,memberService,pushCenter,configServer"
path = "/usr/local/{0}/{0}.jar".format(self.project)
cmd = "sh /usr/local/{0}/{0}.sh %s".format(self.project)
return (path, cmd)
def exce_server(self, action):
ret = self.connect_server()
if action == "stop":
# get the command
cmd = self.get_projetct_name()[1] % action
print(cmd)
# 执行远程脚本
elif action == "start":
appname = self.get_projetct_name()[0]
cmd = 'nohup /usr/local/java/bin/java -Dspring.cloud.config.uri=' \
'"http://" -jar {app_name} > /dev/null 2>&1 &'. \
format(
app_name=appname)
print(cmd)
# check clinet connectec to server
if ret:
"""
stdin = chan.makefile('wb', bufsize)
stdout = chan.makefile('r', bufsize)
stderr = chan.makefile_stderr('r', bufsize)
"""
stdin, stdout, stderr = self.s.exec_command(cmd)
print(stdout.read())
# sti = stdin.read()
sto = stdout.read()
ste = stderr.read()
for i in [sto, ste]:
try:
if not i:
print(i.decode("utf-8"))
except:
raise UnicodeDecodeError("decode error")
else:
raise ConnectionError("connection server error")
self.disconnect_server()
return True
def disconnect_server(self):
self.s.close()
if __name__ == '__main__':
# AppPush("pushCenter").exce_server("stop")
AppPush(sys.argv[1]).exce_server(sys.argv[2])
jenkins 自动化部署执行shell的更多相关文章
- Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)
jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...
- Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】
jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...
- Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)
jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...
- AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署
一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...
- Docker 之 Jenkins自动化部署
Docker 之 Jenkins自动化部署 Jenkins部署 jenkis 绑定gitlab shell脚本自动化构建Docker镜像 提升maven构建速度 jenkins 无法通过shell脚本 ...
- Jenkins自动化部署代码
通过jenkins自动化部署项目代码可以大幅度节省打包上传部署的时间,提高开发测试的工作效率 ========== 完美的分割线 =========== 1.Jenkins是什么 1)Jenkins是 ...
- jenkins自动化部署项目1--下载安装启动(windows)
年初以来断断续续研究jenkins自动化部署项目,前些天终于搞定了,接下来一点点把做的时候遇到的坑以及自己的心得写下来,方便以后复用. 我的jenkins服务是是部署在windows上的 一.下载安装 ...
- Jenkins自动化部署入门详细教程
大纲 1.背景 在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试: 或者前后端分离后,经常会修改接口,然后重新部署 ...
- Jenkins 自动化部署上线
转载于互联网 jenkins自动化部署项目,通过jenkins 部署来节省运维时间,不需要手动cp上线及版本发布 Jenkins 自动化部署上线 Jenkins Jenkins 自动化部署上线一.Je ...
随机推荐
- keil 中报错和警告提示解决办法
1.warning: #1-D: last line of file ends without a newline 解决办法:在文件最后一行加入一个回车. 2.error: #134: expecte ...
- STL--关系型容器
STL--关系型容器 1.树的基本概念 1.1二叉搜索树 二叉搜索树:它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空, ...
- django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'. Did you install mysqlclient or MySQL-python?
Error msg: Unhandled exception in thread started by <function check_errors.<locals>.wrapper ...
- MySQL数据库日志文件(redo与undo)
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库日志文件时间:2019年2月25日内容:MySQL数据库日志文件(redo日志和undo日志 ...
- Python----简单线性回归
简单线性回归 1.研究一个自变量(X)和一个因变量(y)的关系 简单线性回归模型定义:y=β0+β1x+ε 简单线性回归方程:E(y)=β0+β1x 其中: β0为回归线的截距 β1为回归线的斜率 ...
- JAVA如何利用Swiger获取Linux系统电脑配置相关信息
最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...
- springboot中访问jsp文件方式
首先,添加加载jsp文件的依赖包: <!--jsp依赖 对应springboot版本为2.1.4--><dependency> <groupId>org.apach ...
- Tomcat热部署--start tomcat后就可自动部署war包
使用tomcat图形化界面,需要现在配置文件中设置用户名和密码: 在maven中配置Tomcat插件: root目录下的内容可以直接访问: 跳过测试: 查看端口占用:
- pypinyin, jieba分词与Gensim
一 . pypinyin from pypinyin import lazy_pinyin, TONE, TONE2, TONE3 word = '孙悟空' print(lazy_pinyin(wor ...
- gRPC 如何使用python表示多维数组
在使用gRPC作为远程调用框架时,如何使用python来表示多维数组呢?gRPC中定义proto文件时,有一个参数是repeated,用来表示重复的数据类型,使用这个参数可以表示list类型.如下,我 ...