教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)   最近在实习中接触了jenkins这个东西,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。    下面教程分为以下几个部分:一、在你的本地电脑或者linux服务器上下载安装jenkins:jen…

大家好,又见面了,我是你们的朋友全栈君。

      最近在实习中接触了jenkins这个东西,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。

       下面教程分为以下几个部分:

一、在你的本地电脑或者linux服务器上下载安装jenkins:

jenkins下载地址:https://jenkins.io/   下载网站的war包版本就好了

下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行sh startup.sh),然后通过浏览器访问,如我的电脑上访问:localhost:8080/jenkins 。启动后的界面如下:

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

然后到提示的文件中把里面的文本复制出来填到管理员密码中。

接着如果是在本地电脑跑,可能会出现:该jenkins实例似乎已离线 提示,如果出现,是因为本地https访问不了的原因。在浏览器中另打开一个界面http://localhost:8080/pluginManager/advanced,把升级站点中的url中的https改为http,保存更新。然后关掉tomcat服务器重启,就可以联网了。

        接下来选择安装推荐的插件,这个需要一定的时间。最后额外推荐安装两个插件,在系统管理中可以安装插件:

1、 Rebuilder

2、 Safe Restart

二、在linux服务器中安装git, maven,创建一个jenkens目录,配置git的公钥到你的github上,这些步骤是使用jenkins的前提。

     安装git的目的是在自动化部署前实时从git远程仓库中拉取最新的代码。在linux(我用的是centos系统)安装git:

yum install git

     生成密钥:

ssh-keygen -t rsa -C "youremail@abc.com"

    可以不设置密钥密码直接按三次回车。 把家目录中生成的公钥内容复制到github或其他仓库上。    

    安装maven的目的是通过项目中的pom.xml文件自动解决项目依赖问题,构建项目。linux中通过wget+下载链接下载maven的zip包然后解压即可。配置maven环境变量:

vim /etc/profile

//在这个文件末尾加上
export MAVEN_HOME=/root/maven3.4.5
export PATH=$MAVEN_HOME/bin:$PATH

//保存后在命令行输入,启动配置
. /etc/profile

    创建jenkins目录,用来存储拉取下来的项目代码等。

三、将Linux服务器注册到Jenkins上

1、开启服务器上的ssh服务,可通过 netstat -anp | grep :22命令查看是否开启

2、先来测试一下怎么在jenkins中操作远程服务器

在jenkins中选择系统管理——》新建节点

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

其中远程工作目录即你在Linux上创建的jenkins目录。在Credentials添加一个远程用户,输入你的远程机器用户名和密码保存。教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

点击TestEnv,启动代理。

在全局工具配置中配置git命令:

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

3、自动化部署过程原理:

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

所以需要编写一个shell脚本来执行这个过程。

具体的创建Jenkins任务的过程为

1.创建jenkins任务

2.填写Server信息

3.配置git参数

4.填写构建语句(shell脚本),实现自动部署。

四、创建自动化部署任务

1、编写shell部署脚本deploy.sh,并放到linux服务器中的jenkins目录下,在该目录下通过touch deploy.sh创建一个脚本,把下面的脚本复制到里面即可(到时每次自动部署都会执行它),脚本中的my-scrum为我要自动构建的项目名:

#!/usr/bin/env bash
#编译+部署项目站点

#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
# export PROJ_PATH=这个jenkins任务在部署机器上的路径

# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径

### base 函数
killTomcat()
{
    #pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
    #echo "tomcat Id list :$pid"
    #if [ "$pid" = "" ]
    #then
    #  echo "no tomcat pid alive"
    #else
    #  kill -9 $pid
    #fi
    #上面注释的或者下面的
    cd $TOMCAT_APP_PATH/bin
    sh shutdown.sh
}
cd $PROJ_PATH/my-scrum
mvn clean install

# 停tomcat
killTomcat

# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war

# 复制新的工程到tomcat上
cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/

cd $TOMCAT_APP_PATH/webapps/
mv my-scrum.war ROOT.war

# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

2、在jenkins上点击新建一个任务,填好任务名,填写运行的节点(上文中新建节点时创建的):

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

3、点击源码管理,填写github(或gitlab等)地址:

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

4、点击add,选择check out to a sub-directory ,添加源码下载到jenkins目录下的指定目录(可以命名为你的项目名):

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)
5、填写构建任务时的shell脚本,然后保存,点击立即构建完成自动构建。(这里有一个坑,一定要给tomcat下所有sh文件加上x权限才能启动tomcat成功,具体为在tomcat目录上层执行chmod a+x  -R tomcat目录或者在tomcat的bin目录下执行chmod +x *.sh)

#当jenkins进程结束后新开的tomcat进程不被杀死
BUILD_ID=DONTKILLME
#加载变量
. /etc/profile
#配置运行参数

#PROJ_PATH为设置的jenkins目录的执行任务目录
export PROJ_PATH=`pwd`
#配置tomcat所在目录
export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum

#执行写好的自动化部署脚本
sh /root/jenkins/deploy.sh

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

6、自动化构建成功:

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

7、后续代码如果有改动,只要push到github或者gitlab等上,在jenkins界面中再次执行构建任务就可以了,非常方便,自动化部署,再也不用手动上传项目到服务器了。

五、解决一个tomcat关闭,所有tomcat都被关闭了的问题(如果你的jenkins也是安装的服务器上的其中一个tomcat中,就可能被莫名杀掉)

       这是因为所有的tomcat的关闭脚本(shutdown.sh或者说catalina.sh)都默认监听的是8005端口。只要进去tomcat目录下的conf目录下的server.xml文件中,将

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->

中的8005端口改为不同的端口,就不会一个tomcat关闭,所有的tomcat都被关闭了

六、以后可以在linux服务器中安装多个tomcat,来部署不同的项目,分别使用不同的端口,如我喜欢用8081,8082,8083等端口来解决多个tomcat端口冲突问题(在tomcat的conf目录下的server.xml中修改即可,默认为8080)。然后可以用jenkins来管理这些tomcat的自动化部署啦。

七、谢谢阅读,欢迎交流!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137153.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vs2008连接tfs2013_VS连接SQL网页登录

    vs2008连接tfs2013_VS连接SQL网页登录偶尔还是会用到,老是忘记安装的顺序,在这儿mark一下。用VS2008连接TFS2010,需要按照以下顺序安装一下组件:.VS2008TeamExplorer2008      3.InstallVisualStudio2008SP1      4.InstallVSTS2008ForwardCompatibilityUpdate

    2022年9月23日
    3
  • 解决Android 网页加载链接 图片不展示问题

    解决Android 网页加载链接 图片不展示问题

    2021年10月1日
    44
  • modelsim-win64-10.4-se 破解攻略

    modelsim-win64-10.4-se 破解攻略在实验室换了新的win10系统,原来的quartus9.0在win10上安装不成功,没办法只能换成13.1版本,已经安装可用,下面是与其配合的modelsim-win64-10.4-se的破解攻略,安装教程可以去看正点原子的FPGA开发手册,写的很详细,但是没有讲破解方法,下面是可用的破解方法:软件安装好了却不能用,想必大家都有过这样的痛苦和无奈。这款软件的破解花了我整整一个下午的时间…

    2022年5月24日
    166
  • USB引脚及定义_u盘引脚数据线接线图

    USB引脚及定义_u盘引脚数据线接线图USB2.0USB接口定义:USB引脚定义:针脚名称说明接线颜色1VCC+5V电压红色2D-数据线负极白色3D+数据线正极绿色4GND接地黑色MiniU

    2022年8月3日
    11
  • 公网IP和内网IP区别

    公网IP和内网IP区别什么是内网IP:一些小型企业或者学校,通常都是申请一个固定的IP地址,然后通过IP共享(IPSharing),使用整个公司或学校的机器都能够访问互联网。而这些企业或学校的机器使用的IP地址就是内网IP,内网IP是在规划IPv4协议时,考虑到IP地址资源可能不足,就专门为内部网设计私有IP地址(或称之为保留地址),一般常用内网IP地址都是这种形式的:10.X.X.X、172.16.X.X-1…

    2022年4月30日
    48
  • java逻辑删除_MybatisPlus中的删除和逻辑删除及区别介绍

    java逻辑删除_MybatisPlus中的删除和逻辑删除及区别介绍删除又分为逻辑删除和物理删除,那么它们有什么区别呢?物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除与逻辑删除怎么实现的吧首先假设我有这样一张表实体类:package…

    2022年6月2日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号