1. 背景介绍
在实际开发中,经常要一边开发一边测试,经常为了一个功能而不断更新版本,这些情况都会涉及到频繁的打包、部署;手动打包的涉及到项目上传、打包、发布等很多重复工作;
那么,有一种工具能够实现,将代码提交到git后就自动打包部署,替换手动认为打包,答案是肯定的:Jenkins ,当然除了Jenkins以外,也还有其他的工具可以实现自动化部署;
2. Jenkins服务器搭建于基本配置
2.1. Jenkins自动化/持续集成部署实现原理
2.2. Python3.0自动化发布脚本
DevOps_remote.py文件
#!/usr/bin/env python
#coding=utf-
import paramiko
import sys
#shell 传入参数
sourcePath = sys.argv[]; #源目录
targetPath = sys.argv[]; #目标目录
jarName = sys.argv[]; #文件名
runPort = sys.argv[]; #运行端口
#部署服务器配置
serveHost = ["192.168.208.131","192.168.208.134","192.168.208.135"]; #目标服务器IP
serveKey = {"192.168.208.131":"?","192.168.208.133":"?","192.168.208.134":"?","192.168.208.135":"?"}; #目标服务器密码
serveUser = {"192.168.208.131":"march","192.168.208.133":"march","192.168.208.134":"march","192.168.208.135":"march"}; #目标服务器登录用户名
serveSSHPort = {"192.168.208.131":,"192.168.208.133":,"192.168.208.134":,"192.168.208.135":}; #目标服务器SSH 端口
#监听invoke_shell 交互动态结果
#cmd 交互对象,endParam 结尾对象
def mutualResult(cmd,endParam):
buff = "";
while not buff.endswith(endParam):
line = cmd.recv();
try:
#进行异常捕捉,如果解码有问题,则换一种解码方式
buff += line.decode("utf8");
except Exception :
buff += line.decode("gb18030");
return buff;
#kill 运行端口
def killPort(ssh,port):
print ("run cmd >> " + "netstat -tunlp | grep "+port+" | awk '{print $7}' | awk -F'/' '{print $1}'");
stdin, stdout, stderr = ssh.exec_command("netstat -tunlp | grep "+port+" | awk '{print $7}' | awk -F'/' '{print $1}'");
pid = stdout.read().decode();
print(pid)
if pid:
print ("run cm