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 ...
随机推荐
- 在原有数据库中使用 CodeFirst
一.为当前实体模型启用数据迁移 1.Enable-Migrations -ContextTypeName EME.DBHelper.StoreContext(数据访问上下文) 2. Add-Migra ...
- Vue组织架构图组件
vue-tree-chart :deciduous_tree: Vue2树形图组件 安装 npm i vue-tree-chart --save 使用 in template: <TreeC ...
- YASnippet - emacs 的代码片段管理工具
添加 snippet M-x 然后输入 yas-new-snippet 回车 RET,会出现一个新的 buffer # -*- mode: snippet -*- # name: # key: # - ...
- 单向链表的Java实现
package testOffer.linkedList; import org.w3c.dom.Node; public class SingleLinkedList { //测试用例 public ...
- 网站通信协议升级到HTTPS&HTTP2
为何要升级到HTTPS和HTTP2? http://baijiahao.baidu.com/s?id=1602041305989767011&wfr=spider&for=pc htt ...
- 10 Django RESTful api 实现匿名访问
# views_send_code.py from rest_framework.permissions import AllowAny class MsgCodeViewSet(CreateMode ...
- Mysql Navicat数据库定时备份,定时删除
Navicat自带实现数据库定时备份 1.先点击需要备份的数据库,然后点击计划,再点击新建批处理作业 2.然后出现双机可用任务列表,然后在已选择的任务中会出现可用任务 3. 点击保存,弹出对话框,给这 ...
- 优先队列Priority Queue和堆Heap
对COMP20003中的Priority queue部分进行总结.图片来自于COMP20003 queue队列,顾名思义特点先进先出 priority queue优先队列,出来的顺序按照优先级prio ...
- python 所有常用模块汇总
time:时间 时间戳(timestamp):time.time() 延迟线程的运行:time.sleep(secs) (指定时间戳下的)当前时区时间:time.localtime([secs]) ( ...
- html2canvas 识别 svg 解决方案
参考: 预览地址 http://jsfiddle.net/bv16o50f/1/ html <div class="visualization"> <svg xm ...