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 ...
随机推荐
- U盘制作启动盘
https://jingyan.baidu.com/article/15622f24322f52fdfcbea58b.html UltraISO v9.65.3237 官方版及注册码 保存为uikey ...
- python接口自动化-session_自动发文
一.session简介 查看 requests.session() 帮助文档(只贴了一部分内容) import requests help(requests.session()) class Sess ...
- CSS有哪些引入方式,link和@import的区别
3种方式哦,行内样式.内部样式表.外部样式表 1. 行内样式又称为内联样式,直接在HTML标签的style属性中添加css. 会导致 HTML 代码变得冗长 2. 内部样式表又称为嵌入方式,是在HTM ...
- django项目外部的脚本文件执行ORM操作,无需配置路由、视图启动django服务
#一.将脚本路径添加到python的sys系统环境变量里 import sys # sys.path.append('c:/Users/Administrator/www/mymac') #第一种.绝 ...
- foreman容器化部署
一.前言 最近公司要求对一批GPU服务器安装操作系统,之前同事一直采用cobbler安装系统,一旦服务器设置为pxe优先启动,会出现重复安装系统的问题,并且如果线上服务器忘记修改第一启动项为硬盘启动, ...
- Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
from django.db import models # Create your models here. class Category(models.Model): caption = mode ...
- PHP用户输入数据进行过滤
1.在表单中,input项,如果用户输入的是英文状态下的双引号或单引号,数据保存后.以后又在后台编辑的时候,<input value=" "这是带引号的值,因为引号导致问题& ...
- CSS3 移动端 1PX 线变成0.5PX
.line1 {position:relative} .line1:after {content:'';position:absolute;bottom:0;left:0;width:100%;hei ...
- ionic3创建选项卡
html页面 <ion-content padding> <ion-segment [(ngModel)]="tabs"> <ion-segment- ...
- Fiddle Proxy
1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有你的电脑和互联网之间的http(S)通讯,可以查看.修改所有的“进出”的数据.使用代理地址:127.0.0.1, 默认端口:888 ...