Jenkins 自动化(CIDI)部署

Jenkins 自动化(CIDI)部署,第1张

Jenkins 自动化(CI/DI)部署

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 cmd >> 关闭 java进程 进程ID: "+pid); ssh.exec_command("kill -9 "+pid); def deploy(): print("开始部署"+jarName); for ip in serveHost: print ("连接服务器IP:"+ip); #连接服务器 ssh =paramiko.SSHClient(); ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()); ssh.connect(hostname=ip,port=serveSSHPort[ip],username=serveUser[ip],password=serveKey[ip]); cmd = ssh.invoke_shell(); #连接交互 print (mutualResult(cmd,"$ ")); print ("开始复制"+jarName+" >> 服务:"+ip); print ("run cmd >> scp -r -P 5321 [email protected]:/var/lib/jenkins/workspace/" +sourcePath+ "/target/"+jarName+" "+ targetPath +"\n"); cmd.send("scp -r -P 5321 [email protected]:/var/lib/jenkins/workspace/" +sourcePath+ "/target/"+jarName+" "+ targetPath +"\n"); #监听交互并输入密码 mutualResult(cmd,"'s password: "); cmd.send("?\n"); mutualResult(cmd,"$ "); cmd.close(); print("run cmd >> scp suceess"); #kill运行进程 killPort(ssh,runPort); #启动服务 cmd = ssh.invoke_shell(); mutualResult(cmd,"$ "); print ("run cmd >> " + "nohup java -jar " + targetPath + "/" + jarName +" --server.port=" +runPort +" > " + targetPath + "/" + jarName + ".log 2>&1 & \n"); print ("等待服务器:" + ip + "启动"); cmd.send("nohup java -jar " + targetPath + "/" + jarName +" --server.port=" +runPort +" > " + targetPath + "/" + jarName + ".log 2>&1 & \n"); mutualResult(cmd,"$ "); print ("核心服务:" + ip + "发布成功"); cmd.close(); ssh.close(); if __name__ =="__deploy__": deploy() deploy()

DevOps_remote.sh脚本文件

 #!/bin/bash

 python3 /var/lib/jenkins/workspace/dev_remote.py $ $ $ $
2.3. Jenkins 环境插件 2.3.1. 这里建议选择推荐安装,保证基本常用功能可以使用

2.3.2. 全局工具配置(Global Tool Configuration)

2.3.3. 系统配置

配置发布通知邮箱

2.3.4. 插件安装

3. Jenkins自动化部署 3.1. Springboot项目发布部署(git)

3.2. 构建完成后自动打Tag

3.3. Tag项目发布部署

使用参数构建:

3.4. 静态代码审查之fireline

配置:

代码审查结果:

3.5. 静态代码审查之checkstyle

pom.xml配置:

<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.33</version>
</dependency> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<consoleOutput>true</consoleOutput>
<outputFileFormat>xml</outputFileFormat>
<!-- <configLocation>sun_checks.xml</configLocation>-->
<configLocation>google_checks.xml</configLocation>
<linkXRef>false</linkXRef>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.33</version>
</dependency>
</dependencies>
</plugin> <reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<configLocation>google_checks.xml</configLocation>
</configuration> </plugin> </plugins>
</reporting>

Jenkins配置:

代码审查结果:

3.6. WebHook自动触发构建

GITHub自动推送

3.7. 循环构建远程服务完成提示

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/587619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存