Git+Jenkins+Shell实现持续部署

Git+Jenkins+Shell实现持续部署

** 本文主要实现了在Centos7平台使用Git+Jenkins+Shell实现SpringCloud项目的持续部署,当然如果是使用其他的版本管理器如SVN也是可以参考本文进行配置,教程很详细每个步骤都会讲解,如有遗漏或者错误欢迎大家指正。**
在这里插入图片描述

1.安装Jenkins

 因为Jenkins安装比较简单,只是一个war包安装Tomcat部署上去进行配置即可,同理部署需要安装Git和Maven直接安装好就行

1.1安装所需环境

在这里插入图片描述
按顺序安装好Jdk,Maven,Tomcat,Git
在这里插入图片描述

1.2启动服务

然后直接将jenkins.war放到tomcat的webapps目录下启动tomcat即可
在这里插入图片描述

1.3获取密码

启动后打开浏览输入地址:http://ip8080/jenkins访问Jenkins,会提示第一次访问需要密码在这里插入图片描述
输入cat /root/.jenkins/secrets/initialAdminPassword,然后粘贴密码

在这里插入图片描述
在这里插入图片描述

1.4 JenKins离线

输入密码后会提示你的Jenkins实例似已离线。
在这里插入图片描述
直接搜索文件

[root@localhost ~]# find / -name "hudson.model.UpdateCenter.xml"
/root/.jenkins/hudson.model.UpdateCenter.xml
[root@localhost ~]# vi /root/.jenkins/hudson.model.UpdateCenter.xml

将https://updates.jenkins.io/update-center.json修改为http://updates.jenkins.io/update-center.json即可:wq!保存退出,重新启动tomcat即可

<sites>
  <site>
    <id>default</id>
    <url>http://updates.jenkins.io/update-center.json</url>
  </site>
</sites>

1.5插件安装

输入密码后提示消失了,现在选择第一个安装推荐的插件
在这里插入图片描述

1.6 缺少插件

报错:No such plugin: cloudbees-folder
我们去http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/下载这个插件
将插件放入tomcat的/webapps/jenkins/WEB-INF/detached-plugins重启tomcat即可(我也觉得烦)
在这里插入图片描述

1.7下载插件

重启过后自动下载插件,下载失败的话不管他,这一步花的时间会比较久
在这里插入图片描述

1.8注册账号

下载一段时间后会提示部分插件安装失败,不管他直接下一步注册一个新账号,账号密码都设置为admin
在这里插入图片描述

1.9安装完毕

然后会有个修改路径,不用管直接下一步,到这一步Jenkins就安装好了
在这里插入图片描述

2 配置Jenkins

现在开始配置Jenkins
在这里插入图片描述
在这里插入图片描述

2.1 全局安全配置

全局安全配置
在这里插入图片描述

2.2全局工具配置

全局工具配置:Maven
在这里插入图片描述
全局工具配置:JDK
在这里插入图片描述
全局工具配置:Maven
在这里插入图片描述

2.3 手动安装插件

现在安装各种需要的插件
在这里插入图片描述
为了开发方便先下载一个Jenkins的汉化插件
主界面 -> 系统管理 -> 插件管理 -> 可选插件
1.1 安装插件Locale plugin
在这里插入图片描述
1.2 安装插件Localization: Chinese(Simplified)
在这里插入图片描述
修改配置:
系统管理 -> 系统设置 -> Locale
在这里插入图片描述
在这里插入图片描述
jenkins重启
浏览器地址栏输入
http://ip:8080/restart重启
在这里插入图片描述
汉化以后继续下载插件,按照自己的需求去下载,也可以百度所必须的插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 新建项目

插件安装完成后,就可以开始新建项目了
在这里插入图片描述

3.1选择安装方式

选择第一个安装
在这里插入图片描述
因为我是SpringCloud项目所以需要将每个服务都新建一个
在这里插入图片描述

3.2配置Git账号

选择源码管理选择Git>点击添加用户选择自己的git账号即可
在这里插入图片描述
新增后需要手动选择一下用户
在这里插入图片描述
输入完毕先保存
在这里插入图片描述

3.3构建服务

返回首页,找到新建的项目,点击构建
在这里插入图片描述

4 配置shell操作Maven,启动服务

构建成功,如果失败了点w下面的图标>控制台输出,查看日志,一般构建失败是插件安装不完全。
到了这一步就完成了从git上拉取到代码了,下面就需要使用shell脚本对Maven进行操作,以及启动服务。
在这里插入图片描述
现在再次进入项目配置
在这里插入图片描述

4.1 在构建操作中打开执行shell

构建>Exeute shell
在这里插入图片描述
在这里插入图片描述

4.2搜索Jenkins工作空间

现在我们回到服务器中,搜索workspace,找到.jenkins的工作空间,你服务的代码就放在这个位置

[root@localhost bin]# find / -name workspace
/root/.jenkins/workspace
```shell
进入该目录,你更新的代码就都在这个位置了
```shell
[root@localhost bin]# cd /root/.jenkins/workspace
[root@localhost workspace]# ll
total 4
drwxr-x---. 18 root root 4096 Feb 27 05:09 zh-system-eureka
drwxr-x---.  2 root root    6 Feb 27 21:01 zh-system-eureka@tmp
[root@localhost workspace]# cd zh-system-eureka
[root@localhost zh-system-eureka]# ll
total 4
drwxr-x---. 2 root root  173 Feb 27 05:09 config-repo
-rw-r-----. 1 root root 3932 Feb 27 05:09 pom.xml
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-actual
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-admin
drwxr-x---. 4 root root   62 Feb 27 05:09 zh-analysis
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-common
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-config
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-core
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-dao
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-eureka
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-model
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-office
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-process
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-schedule
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-service
drwxr-x---. 3 root root   50 Feb 27 05:09 zh-zuul
[root@localhost zh-system-eureka]# 

4.3在工作空间中执行Maven命令

在这个目录下执行mvn clean install,如果执行成功就可以进行下一步

[root@localhost zh-system-eureka]#  mvn clean install
。
。
。
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] zh-pom ............................................. SUCCESS [  0.237 s]
[INFO] zh-model ........................................... SUCCESS [  3.702 s]
[INFO] zh-common .......................................... SUCCESS [  1.225 s]
[INFO] zh-core ............................................ SUCCESS [  0.262 s]
[INFO] zh-eureka .......................................... SUCCESS [  0.863 s]
[INFO] zh-config .......................................... SUCCESS [  0.321 s]
[INFO] zh-zuul ............................................ SUCCESS [  0.296 s]
[INFO] zh-dao ............................................. SUCCESS [  0.326 s]
[INFO] zh-service ......................................... SUCCESS [  0.739 s]
[INFO] zh-admin ........................................... SUCCESS [  0.616 s]
[INFO] zh-actual .......................................... SUCCESS [  0.529 s]
[INFO] zh-process ......................................... SUCCESS [  2.135 s]
[INFO] zh-office .......................................... SUCCESS [  0.502 s]
[INFO] zh-analysis ........................................ SUCCESS [  0.767 s]
[INFO] zh-schedule ........................................ SUCCESS [  1.032 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.494 s
[INFO] Finished at: 2020-02-27T21:43:13-05:00
[INFO] Final Memory: 102M/314M
[INFO] ------------------------------------------------------------------------
[root@localhost zh-system-eureka]# 

4.4 将Maven命令配置到Jenkins服务中

把这个命令写到Jenkins的服务配置上去,保存确认,然后重新构建一下这个服务
在这里插入图片描述
看一下控制台输出,成功打包,现在代码更新下来并且也重新打包好了下一步就可以启动服务了
在这里插入图片描述

4.5 手动启动构建好的服务

回到服务器,查看一下目录,进去你要启动的服务,因为我新建的是eureka服务,所以进入eureka下的target目录,这里就有刚刚打包好的jar包,直接java -jar运行一下

[root@localhost zh-system-eureka]# ll
total 4
drwxr-x---. 2 root root  173 Feb 27 05:09 config-repo
-rw-r-----. 1 root root 3932 Feb 27 05:09 pom.xml
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-actual
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-admin
drwxr-x---. 5 root root   76 Feb 27 21:43 zh-analysis
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-common
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-config
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-core
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-dao
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-eureka
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-model
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-office
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-process
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-schedule
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-service
drwxr-x---. 4 root root   64 Feb 27 21:43 zh-zuul
[root@localhost zh-system-eureka]# cd zh-eureka/
[root@localhost zh-eureka]# cd target/
[root@localhost target]# ll
total 45324
drwxr-x---. 3 root root       47 Feb 27 21:43 classes
drwxr-x---. 3 root root       25 Feb 27 21:43 generated-sources
drwxr-x---. 2 root root       28 Feb 27 21:43 maven-archiver
drwxr-x---. 3 root root       35 Feb 27 21:43 maven-status
-rw-r-----. 1 root root 46407435 Feb 27 21:43 zh-eureka-1.0.0.jar
-rw-r-----. 1 root root     3079 Feb 27 21:43 zh-eureka-1.0.0.jar.original
[root@localhost target]# java -jar zh-eureka-1.0.0.jar
2020-02-27 21:46:10.384  INFO 23655 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$61ab702f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)

2020-02-27 21:46:10.685  INFO 23655 --- [           main] com.wk.zh.eureka.EurekaApplication       : No active profile set, falling back to default profiles: default
2020-02-27 21:46:11.575  WARN 23655 --- [           main] o.s.boot.actuate.endpoint.EndpointId     : Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format.
2020-02-27 21:46:11.816  INFO 23655 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=47067ffe-3993-313c-b0db-29a52fc93c3d
2020-02-27 21:46:11.928  INFO 23655 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$61ab702f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-02-27 21:46:12.224  INFO 23655 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8761 (http)
2020-02-27 21:46:12.258  INFO 23655 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-02-27 21:46:12.258  INFO 23655 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.16]
2020-02-27 21:46:12.274  INFO 23655 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
2020-02-27 21:46:12.369  INFO 23655 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-02-27 21:46:12.369  INFO 23655 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1671 ms
2020-02-27 21:46:12.491  WARN 23655 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2020-02-27 21:46:12.491  INFO 23655 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2020-02-27 21:46:12.521  INFO 23655 --- [           main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@471a9022
2020-02-27 21:46:13.528  INFO 23655 --- [           main] c.s.j.s.i.a.WebApplicationImpl           : Initiating Jersey application, version 'Jersey: 1.19.1 03/11/2016 02:08 PM'
2020-02-27 21:46:13.613  INFO 23655 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2020-02-27 21:46:13.614  INFO 23655 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2020-02-27 21:46:13.804  INFO 23655 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2020-02-27 21:46:13.804  INFO 23655 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2020-02-27 21:46:14.296  INFO 23655 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-02-27 21:46:14.773  WARN 23655 --- [           main] o.s.c.n.core.CoreAutoConfiguration       : This module is deprecated. It will be removed in the next major release. Please use spring-cloud-netflix-hystrix instead.
2020-02-27 21:46:14.799  INFO 23655 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2020-02-27 21:46:14.842  INFO 23655 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2020-02-27 21:46:14.843  INFO 23655 --- [           main] com.netflix.discovery.DiscoveryClient    : Client configured to neither register nor query for data.
2020-02-27 21:46:14.876  INFO 23655 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1582857974875 with initial instances count: 0
2020-02-27 21:46:14.926  INFO 23655 --- [           main] c.n.eureka.DefaultEurekaServerContext    : Initializing ...
2020-02-27 21:46:14.928  WARN 23655 --- [           main] c.n.eureka.cluster.PeerEurekaNodes       : The replica size seems to be empty. Check the route 53 DNS Registry
2020-02-27 21:46:14.949  INFO 23655 --- [           main] c.n.e.registry.AbstractInstanceRegistry  : Finished initializing remote region registries. All known remote regions: []
2020-02-27 21:46:14.950  INFO 23655 --- [           main] c.n.eureka.DefaultEurekaServerContext    : Initialized
2020-02-27 21:46:14.961  INFO 23655 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-02-27 21:46:15.038  INFO 23655 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application CLOUD-EUREKA-SERVER with eureka with status UP
2020-02-27 21:46:15.041  INFO 23655 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Setting the eureka configuration..
2020-02-27 21:46:15.041  INFO 23655 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Eureka data center value eureka.datacenter is not set, defaulting to default
2020-02-27 21:46:15.042  INFO 23655 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Eureka environment value eureka.environment is not set, defaulting to test
2020-02-27 21:46:15.069  INFO 23655 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : isAws returned false
2020-02-27 21:46:15.069  INFO 23655 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Initialized server context
2020-02-27 21:46:15.069  INFO 23655 --- [      Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl    : Got 1 instances from neighboring DS node
2020-02-27 21:46:15.069  INFO 23655 --- [      Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl    : Renew threshold is: 1
2020-02-27 21:46:15.069  INFO 23655 --- [      Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP
2020-02-27 21:46:15.081  INFO 23655 --- [      Thread-13] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2020-02-27 21:46:15.087  INFO 23655 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8761 (http) with context path ''
2020-02-27 21:46:15.088  INFO 23655 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8761
2020-02-27 21:46:15.090  INFO 23655 --- [           main] com.wk.zh.eureka.EurekaApplication       : Started EurekaApplication in 5.754 seconds (JVM running for 6.234)

4.6 配置.sh文件实现自启动

输入eureka的地址访问成功,说明已经成功启动服务,现在我们通过命令让服务自动启动。
在这里插入图片描述

4.6.1 新建目录

考虑到服务启动分为两步,再构建时重启服务先需要查看你启动的服务是否已经启动,如果已经启动的话则需要获取该服务的pid再将其kill掉,然后才可以启动服务避免端口占用。因为所涉及的命令比较多,所以我不直接将命令直接写到Jenkins的配置里,而是单独编写.sh的可执行文件,方便后期的维护。
我们在home目录下新建admin文件夹,在子目录新建workspace,Jenkins-sh连个文件夹。
workspace存放从Jenkins工作空间的jar
Jenkins-sh放编写的.sh可执行文件
在这里插入图片描述
在Jenkins-sh文件夹在新建eureka文件夹,具体命名根据服务名称来
在此目录新建两个文件
eureka-stop.sh:服务关闭文件
eureka-replace.sh:服务启动文件

4.6.2 新建可执行文件

在这里插入图片描述

4.6.3 编辑文件输入命令

使用vi命令编辑eureka-stop.sh文件,输入下面的命令,内容比较简单首先获取到jar的pid判断是否存在,如果为空则表明服务之前没有启动过则不进行任何操作,如果有说明该服务正在运行,用kill -9将这个线程杀掉即可。

echo "Stopping SpringBoot Application"
pid=`ps -ef | grep zh-eureka-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi

使用vi命令编辑eureka-replace.sh文件,输入下面的命令,只有两句,第一步就是讲默认Jenkins工作空间下的jar包复制到我们新建好的目录来进行操作,复制过来后直接启动服务即可

cp /root/.jenkins/workspace/zh-system-eureka/zh-eureka/target/zh-eureka-1.0.0.jar  /home/admin/workspace/zh-eureka-1.0.0.jar
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-eureka-1.0.0.jar &

4.6.4 手动测试

我们先手动执行以下这两个文件

[root@localhost Jenkins-sh]# cd eureka/
[root@localhost eureka]# sh eureka-stop.sh 
Stopping SpringBoot Application
[root@localhost eureka]# sh eureka-replace.sh 
[root@localhost eureka]# nohup: appending output to ‘nohup.out’

服务没问题
在这里插入图片描述

4.6.5 配置Jenkins使服务在构建时自动执行.sh文件

再次回到Jenkins配置服务,在构建中自动执行停止和启动命令
在这里插入图片描述

4.6.6 测试成功

重新构建一下,查看控制台可以看到自动执行了,并且服务自动启动起来
到这一步Jenkins的整个配置就完成了,接下来就根据实际情况,因为我是SpringCloud多服务的项目所以每个项目都需要单独在Jenkins上新建,如果是单体服务则不需要。
在这里插入图片描述

4.6.7 最终效果

最终的效果
在这里插入图片描述
在这里插入图片描述

5 配置Jenkins自启动

Jenkins属于服务部署,保证其正常运行十分重要,当服务器宕机重启过后我们的服务能够快速恢复正常也是重中之重。

5.1 新建可执行文件

在/home/admin/Jenkins-sh目录下新建jenkins-replace.sh文件
在这里插入图片描述

5.2 编辑重启命令

输入命令,步骤也比较简单,先将Jenkins所在的Tomcat启动,再将所有的服务逐一启动即可

#Jenkins自启动脚本
sh /opt/apache-tomcat-8.5.47/bin/startup.sh
#2.启动SpringCloud组件
echo "Eureka SpringBoot Application"
pidEureka=`ps -ef | grep zh-eureka-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidEureka" ]
then
   kill -9 $pidEureka
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-eureka-1.0.0.jar &

function eurekaStart()
{	
APP_NAME=/root/.jenkins/workspace/zh-system-eureka/zh-eureka/target/zh-eureka-1.0.0.jar
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
if [ -z "${pid}" ]; then
   echo "eureka Start"
  else
	sleep 1
	echo "eureka Stop"
    eurekaStart
  fi	
}
eurekaStart
echo "Config SpringBoot Application"
pidConfig=`ps -ef | grep zh-config-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidConfig" ]
then
   kill -9 $pidConfig
fi
cp /root/.jenkins/workspace/workspace/zh-system-config/zh-config/target/zh-config-1.1.0.jar  /home/admin/workspace/zh-config-1.1.0.jar
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-config-1.1.0.jar &
function configStart()
{	
APP_NAME=/root/.jenkins/workspace/zh-system-config/zh-config/target/zh-config-1.0.0.jar
pidConfig=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
if [ -z "${pidConfig}" ]; then
   echo "config Start"
  else
	sleep 1
    configStart
  fi	
}
configStart
echo "Zuul SpringBoot Application"
pidZuul=`ps -ef | grep zh-zuul-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidZuul" ]
then
   kill -9 $pidZuul
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-zuul-1.0.0.jar &
sleep 30
#3.启动各个服务
echo "Admin SpringBoot Application"
pidAdmin=`ps -ef | grep zh-Admin-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidAdmin" ]
then
   kill -9 $pidAdmin
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-admin-1.0.0.jar &
echo "Actual SpringBoot Application"
pidActual=`ps -ef | grep zh-actual-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidActual" ]
then
   kill -9 $pidActual
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-actual-1.0.0.jar &
echo "Analysis SpringBoot Application"
pidAnalysis=`ps -ef | grep zh-analysis-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidAnalysis" ]
then
   kill -9 $pidAnalysis
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-analysis-1.0.0.jar &
echo "Office SpringBoot Application"
pidOffice=`ps -ef | grep zh-office-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidOffice" ]
then
   kill -9 $pidOffice
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-office-1.0.0.jar &
echo "Process SpringBoot Application"
pidProcess=`ps -ef | grep zh-process-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidProcess" ]
then
   kill -9 $pidProcess
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-process-1.0.0.jar &
echo "Schedule SpringBoot Application"
pidSchedule=`ps -ef | grep zh-schedule-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pidSchedule" ]
then
   kill -9 $pidSchedule
fi
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/zh-schedule-1.0.0.jar &

5.3 手动执行

手动执行测试一下

[root@localhost ~]# sh /home/admin/Jenkins-sh/jenkins-replace.sh 
Using CATALINA_BASE:   /opt/apache-tomcat-8.5.47
Using CATALINA_HOME:   /opt/apache-tomcat-8.5.47
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.5.47/temp
Using JRE_HOME:        /opt/jdk1.8.0_11
Using CLASSPATH:       /opt/apache-tomcat-8.5.47/bin/bootstrap.jar:/opt/apache-tomcat-8.5.47/bin/tomcat-juli.jar
Tomcat started.
Eureka SpringBoot Application
nohup: appending output to ‘nohup.out’
eureka Start
Config SpringBoot Application
cp: cannot stat ‘/root/.jenkins/workspace/workspace/zh-system-config/zh-config/target/zh-config-1.1.0.jar’: No such file or directory
nohup: appending output to ‘nohup.out’
config Start
Zuul SpringBoot Application
nohup: appending output to ‘nohup.out’
Admin SpringBoot Application
Actual SpringBoot Application
nohup: appending output to ‘nohup.out’
Analysis SpringBoot Application
nohup: appending output to ‘nohup.out’
Office SpringBoot Application
nohup: appending output to ‘nohup.out’
Process SpringBoot Application
nohup: appending output to ‘nohup.out’
Schedule SpringBoot Application
nohup: appending output to ‘nohup.out’
[root@localhost ~]# nohup: appending output to ‘nohup.out’

5.4 配置到系统profile

配置到/etc/profile文件,当系统重启就会执行该文件
vi 打开文件在最后一行加入,保存并退出,执行一下source /etc/profile,此时就全部配置完成了,当服务器宕机重启你的Jenkins就会自动启动,服务也会启动无需重新构建服务。

sh /home/admin/Jenkins-sh/jenkins-replace.sh

Jenkins到此就配置完成了,本文主要详细的讲解了实现Jenkins+Git+Shell配置全过程,当然如果你是用的SVN或者其他的代码管理工具也是可以参靠此篇文章进行配置的,如果文字有遗漏或者错误都欢迎指出,配置过程出现问题也欢迎加我QQ815369891一起讨论。

发布了7 篇原创文章 · 获赞 22 · 访问量 3283

猜你喜欢

转载自blog.csdn.net/qq_44199087/article/details/104532711