精华内容
下载资源
问答
  • Jenkins2.19.3,自动化部署项目,支持实时部署,详情请参见博文:http://blog.csdn.net/l1028386804/article/details/78593726
  • Jenkins自动化部署项目

    2019-10-10 14:50:29
    Jenkins自动化部署项目 项目部署原理: 首先项目部署到git服务器,每当我们代码完成提交后,我们会通过git客户端上传代码到git服务器,然后我们会通过jenkins自动化部署,自动化部署的过程为,通过git客户端从服务器...

    Jenkins自动化部署项目

    经过一天的学习终于成功使用Jenkins搭建了一套自动化部署环境,用在了公司的后台的微服务自动化部署,为了加深记忆以及广大程序员学习,特做出了总结,以便让后续开发者有迹可寻。

    项目部署原理:

    首先项目部署到git服务器,每当我们代码完成提交后,我们会通过git客户端上传代码到git服务器,然后我们会通过jenkins自动化部署,自动化部署的过程为,通过git客户端从服务器拉取代码到本地,编译打包本地代码,上传打包完成后的代码到linux服务器,通过脚本启动linux环境中刚上传打包好的代码。此时我们自动化部署就完成了。

    项目部署准备:

    1. 项目部署环境

    1) 前端nginx服务

    负载均衡nginx 110.145.192.220:8888
    静态服务器1 nginx1 110.145.192.220:8887
    静态服务器2 nginx2 110.145.192.220:8889

    前端nginx部署环境可以参考https://blog.csdn.net/jzc12345611/article/details/100701761

    2) zookeeper注册中心

    110.145.192.221:2181

    3) 配置中心configserver

    110.145.192.216:8080

    4) 微服务地址

    gteway1 110.145.192.215:8092
    gteway2 110.145.192.215:8093
    其他微服务,端口为配置类

    5) 数据库

    110.145.113.22:1521
    url: jdbc:oracle:thin:@110.145.113.22:1521/orcl
    username: ouos
    password: ouos

    2. git服务器代码库

    http://110.146.121.138:8091/

    3. jenkins服务器

    http://110.146.126.140:8090/jenkins/

    4. 部署脚本

    脚本资料在网盘已经给出

    项目部署步骤:

    1. 从git服务器拉取代码

    git地址:

    http://110.146.121.138:8091/summary/?r=ouos-parent.git 用户名密码联系管理员

    1)config-file:

    配置测试环境jar包的配置文件(微服务的配置)
    dataconfig目录下
    bootstrap.yml连接测试环境配置中心,
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    gateway目录下
    bootstrap.yml连接测试环境注册中心,曝漏网关的地址端口8099
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    ouosserver目录下
    bootstrap.yml连接测试环境注册中心
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    2)Config-file-dev:

    配置开发环境jar包的配置文件(微服务的配置)
    dataconfig目录下
    bootstrap.yml连接测试环境配置中心,
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    gateway目录下
    bootstrap.yml连接测试环境注册中心,曝漏网关的地址端口8092
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    ouosserver目录下
    bootstrap.yml连接测试环境注册中心
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    gateway2目录下
    bootstrap.yml连接测试环境注册中心,曝漏网关的地址端口8093
    dfzq-grpc-config.properties 连接注册中心的地址并注册

    注意:config-file-dev在Config-file的基础上添加了gateway2该网关是新增了的网关,对应前端做负载均衡用

    3)ouos-parent:

    开发代码,项目代码存放地址,需要打成jar包的多个微服务项目

    4)stages:

    Ansible-playbook 的运行host 配置,以及用到的脚本
    ansibleHosts配置可连接到项目的网段,jenkins服务器连接到的地址应该在改网段内
    build-ouos-parent.yml测试环境打包
    build-ouos-parent-dev.yml 开发环境第一次打包
    build-ouos-parent-dev2.yml 开发环境第二次打包
    control-accountmgr.yml 查看启动状态
    deploy-ouos-parent.yml 测试环境部署项目到服务器
    deploy-ouos-parent2.yml 开发环境部署项目到服务器
    ouos-gateway.sh.j2 测试环境以及开发环境第一次启动gateway服务
    ouos-gateway-2.sh.j2开发环境第二次启动gateway2服务
    ouos-dataconfig.sh.j2 启动dataconfig服务的脚本
    ouos-queryserver.sh.j2 启动查询服务的脚本

    2. Jenkins部署:

    1)登录jenkins

    http://110.146.126.140:8090/jenkins/ 用户名密码联系管理员

    2)找到部署项目的选项

    登录成功后按照以下步骤操作

    第一次构建

    大营运-> devops-开发环境-> Build with Parameters-> mode-name选择all -> 开始构建
    这时项目开始构建部署了,如果想查看日志点击构建项目的时间进程条即可
    因为开发环境为集群环境需要多部署一个gateway2所以需要构建两次

    第二次构建

    大营运 ->devops-开发环境->Build with Parameters ->mode-name选择gateway2 -> 开始构建
    构建成功后会在日志中显示Finished: SUCCESS字眼,且构建条的颜色为绿色
    如果构建失败在日志中显示Finished: falture字眼,且构建条的颜色为红色

    部署的微服务有:ouos-server, gateway,dataconfig,gateway2服务,其中gateway2要在开发环境的第二次部署时部署。

    3. Jenkins其他参数介绍

     Refspec:
    origin/master
    origin/dev
    选择代码分支

     Force:
    勾选是重新拉代码打包
    不勾选跳过打包,直接用上次打包的进行部署

     IPs:
    部署机ip。输入对应环境的IP,多个ip用逗号隔开

     repo_name:
    项目名称

     app_name:
    应用名称

     model_name:
    模块名称,all代表在目标主机上部署所有model.可选项:代表各类微服务,如果后续添加微服务则需要添加各类微服务
    All
    dataconfig
    ouos-gateway
    ouos-query-server
    ouos-gateway2

     git_dir:
    源码所在目录

     build_dir:
    打包路径

     Nodes:
    节点

     buildfile_tag:
    构建文件的标记,如1.0-SNAPSHOT

    4. 构建Shell脚本

    项目部署拓扑图:

    项目部署拓扑图地址:https://www.processon.com/diagraming/5d9ec772e4b002a6447b9640
    项目部署拓扑图截图如下:

    展开全文
  • 它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。  下面教程分为以下几...

          最近在实习中接触了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实例似乎已离线 提示,如果出现,是因为本地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中选择系统管理——》新建节点

    其中远程工作目录即你在Linux上创建的jenkins目录。在Credentials添加一个远程用户,输入你的远程机器用户名和密码保存。

    点击TestEnv,启动代理。

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

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

    所以需要编写一个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上点击新建一个任务,填好任务名,填写运行的节点(上文中新建节点时创建的):

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

    4、点击add,选择check out to a sub-directory ,添加源码下载到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

    6、自动化构建成功:

    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的自动化部署啦。

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

    展开全文
  • 主要介绍了自动化部署项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • jenkins自动化部署项目

    2019-03-25 15:16:48
    jenkins自动化部署项目1--下载安装启动(windows) 我的jenkins服务是是部署在windows上的 一.下载安装: 我安装的是当时最新版本的jenkins2.89.4,直接官网下载zip文件,解压之后点击jenkins.msi文件傻瓜式安装...

    jenkins自动化部署项目1--下载安装启动(windows)

    我的jenkins服务是是部署在windows上的

    一.下载安装:

    我安装的是当时最新版本的jenkins2.89.4,直接官网下载zip文件,解压之后点击jenkins.msi文件傻瓜式安装(这个msi文件不要删掉,后面如果jenkins遇到一些无法解决的插件安装问题等等,可以试着用它repair,会保留已有的job和配置)

    Ps:jenkins是默认开机自启的,但是如果jenkins默认的8080端口被占用服务起不来,则需要更改默认端口。

      1.网上找到的方法是在jenkins目录下执行java -jar jenkins.war --ajp13Port=-1 --httpPort=8082这条命令,我尝试了这种方法但是cmd命令窗口不能关闭,只要关闭服务就会停掉

       针对此种方式可以start javaw -jar jenkins.war --ajp13Port=-1 --httpPort=8082 以后台服务的方式启动jenkins。但是每次重启都要指定端口

      2.(推荐)直接找到jenkins\jenkins.xml文件修改第41行httpPort为8082,此时如果直接使用命令start javaw -jar jenkins.war,会发现启动的jenkins服务还是用的默认端口8080,正确的启动方式是:net start jenkins

    jenkins自动化部署项目2 --插件的选择和安装

    一.安装插件:

    我选择的安装建议的插件,也可以自定义安装自己想要的插件,在不敢保证自己确定要用的插件是完全正确的情况下建议按推荐安装

    我理解的jenkins+tomcat完成自动化部署maven项目需要如下插件:Maven Integration(安装此插件可以使用maven),Publish Over SSH(安装此插件可以使用ssh将代码部署到远程服务器上去),Deploy to container(ssh不能登录windows,因此如果项目需要部署在windows上时可以考虑使用这个插件或者ftp的插件),GitHub(此插件可以去git下载代码),SSH plugin(远程执行ssh命令)

     

    Gitlab Hook(需要提交代码即可触发项目构建需要安装此插件,并在git服务器用管理员帐户在【设置-webhook】配置jenkins访问地址,由于我们的代码是放在外网git服务器上的,jenkins无法被外网访问,因此不考虑该构建方式)

     

    *按照上面所说,后面在【系统管理-插件管理-可选插件】下搜索并安装如下几个插件(其他插件已经被推荐安装):Maven Integration(安装此插件可以新建maven风格的job)   , Publish Over SSH(用来远程部署代码到linux服务器上,ssh不能远程登录到windows上)

     

    Ps:1.我两次在不同的机器上安装jenkins第一次进入系统管理,都遇到如下图所示报错,这种情况,我通过运行jenkins.msi,repair之后重新进入就好了

    2.有时候安装插件会失败,重新安装几次就好,大部分原因可能是网络问题:

     

     

     

    jenkins自动化部署项目3 -- 安装和配置jdk、maven、git

    Jenkins提供了自动安装jdk,maven,git的功能,在【系统设置-全局工具配置】里,但是我自动安装没反应,因此我是先手工安装和配置它们的环境变量然后再在【系统设置-全局工具配置】里配置:

    1.jdk

     

    2.git

     

    3.maven

    jenkins自动化部署项目4 -- 系统管理-系统设置ssh配置

    【系统管理】-【系统设置】

    如果应用服务(前端后台)要部署在linux服务器上,我选择的是用ssh

    为了jenkins登录远程登录linux服务器可以免密登录,先配置公钥和私钥:

    我是在windows上通过git的命令窗口先生成公钥和私钥

    1.执行命令ssh-keygen -t rsa -P ''生成公钥和私钥

    在jenkins所在服务器上面执行 ssh-keygen -t rsa -P '', -P后面两个单引号表示密码为空

    之后会在/.ssh目录下创建两个文件id_rsa(私钥),id_rsa.pub(公钥)

    2.接下来继续在jenkins所在windows服务器上通过git命令执行 

    ssh-copy-id -i /C/Users/yangyuan/.ssh/id_rsa.pub root@xx.21.21.xxx(注意路径格式,不然会报错),表示将公钥发给远程linux服务器xx.21.21.xxx的~/.ssh目录下

    上面命令中root为我要ssh远程登录的linux服务器上的用户名,一开始我没有加上root@,一直提示输入密码,怎样都报错,后来尝试着改了,输入root用户密码就可以了

    错误操作:

    正确操作:

     

     3.以上2步就配置好了ssh免密登录linux服务器了,接下来只需要在jenkins的【系统管理】-【系统设置】中配置好ssh就行如下图

     

     

    4.配置完成后点击测试,成功就证明ok了,后面新建job时就可以在【Post Steps】&【构建后操作】那里选择使用ssh发送文件或者命令了

      

     

    ps:关于Remote Directory

    此配置的基本目录。

    此目录必须存在,不会创建。

    发布者只能将文件放在这个目录下面。

     注意,没有任何东西阻止执行程序创建、删除或移动文件,只要用户有权限。

     ps:也尝试过用ssh远程连接windows服务器,但是查阅很多资料都没有成功:https://www.cnblogs.com/chenmingjun/p/8535067.html

    先在要连接的远程服务器上安装并启动ssh的服务,如链接的操作,之后再用随笔里的方法去配置公钥和私钥,最后还是失败了,和链接最后一张图一样,一直提示密码错误

    也试过直接将注册的公钥authorized_keys放到指定目录下,还是不能正常链接,遂放弃(后来求证了一些同事,都没这么用过,死心)

     

    jenkins自动化部署项目5 --STMP服务发送邮件配置

    【系统管理】-【系统设置】里

    1.系统管理员邮件地址:和后面SMTP配置认证的邮箱要一致,即发件箱   --------切记

     

    2.配置SMTP认证的前提是需要在sohu搜狐邮箱开通SMTP/POP3,方法这里就不说了,贴个链接参考下,很简单:https://www.yiyisoft.com/news/457.html

     

     

    做完以上操作之后,选择测试配置,成功即可

     

    jenkins自动化部署项目6 -- 新建job(将服务代码部署在windows上)

    关于构建结束后jenkins会kill所有衍生子进程的官方解决方案:https://wiki.jenkins.io/display/JENKINS/Spawning+processes+from+build

    jenkins(windows)----------->应用服务(windows):2个服务部署在一台windows机器上 

    公司项目是前后端分离的。web前端+java后台服务,因此项目分为两类

    1.前端使用tomacat启动服务:只有一些静态文件,因此新建项目的时候直接选择【构建一个自由风格的软件项目】

    <1>项目名称根据需要填写,git源码配置如图,我点击add-jenkins后选择的是用户名和密码的方式去下载代码(kind处选择username and password,然后填上用户名和密码即可)

     

    <2>构建:先关掉tomcat,再重启tomcat

    ps:此处遇到的坑是,构建完成之后tomcat会随着构建结束被jenkins杀掉进程,为了解决这个问题,需要做下图的设置

    另外,我在命令行里没有将jenkins下载的代码复制到tomcat的webapps目录下,是因为我在tomcat的配置文件里加了一行,server.xml

    <Context path="" docBase="E:\Jenkins\workspace\sr_center\webapp"  />

    这里的命令可以根据需要做调整,只要注意以上标蓝的一点即可(sr_utils.bat脚本内容见下面java项目构建步骤)

     

     

    2.后端通过java -jar命令行的方式启动服务

    <1>新建的时候选择构建一个MAVEN项目(需要强调的是项目的pom.xml文件要能正常使用,我们的项目一开始是用eclipse启动的,后面更改启动服务方式时遇到一些问题)

    源码管理如上面前端,构建触发器看业务需要自由选择,

    <2>build:使用默认的pom.xml即可,不需要更改

    (如果项目使用的一些jar包在maven中央仓库找不到。或者测试环境无法访问外网,无法在线下载一些jar包,有2点要注意:1.Goals and options处可以配置本地仓库路径;2.要提前手工下载安装一些jar包到本地maven仓库。具体操作方法见:https://www.cnblogs.com/yy-cola/p/9664598.html)

    下图步骤是:杀掉要正在运行的此项目进程 ------ 删掉项目jar包(我特意新建了一个目录存放jar包,在此启动服务) ------ 将新下载打包的jar包复制到存放项目的目录 ------以后台启动的方式启动服务

    杀进程的sr_utils.bat脚本是我自己写了之后放在jenkins目录下使用的:通过项目端口找到项目进程,找到则杀掉进程,找不到则忽略。脚本内容如下:

    复制代码

    ::demo
    @echo off
    ::延迟环境变量扩展
    setlocal enabledelayedexpansion
    for /f "delims=  tokens=1" %%i in ('netstat -aon ^| findstr %1') do (
    set a=%%i)
    ::判断服务是否已经启动,如果启动则杀掉进程
    if defined a (taskkill /F /pid "!a:~71,5!") else (echo Service does not exist)
    ::等待你按任意键结束
    pause>nul
    ::执行时后面带上端口即可

    复制代码

     

     

     

     ps:这里需要注意的是,如果将所有命令都写在一个步骤里,执行完一个bat脚本之后,后面的命令将不会被执行,因此这个地方我分了两步。

     

    问题:

    最近在使用jenkins部署服务过程中遇到一个问题,那就是通过start javaw -jar 以后台启动的方式启动服务,如果服务没有成功启动,这个时候jenkins还是显示构建成功,因为对于jenkins来说这个命令本身是成功执行完成了的,jenkins不会继续判断服务是否真的启动成功构建就结束了。

    解决方案:

    jenkins认为非零返回就是job失败

    在启动服务之后新增一步检查服务是否真的成功启动的步骤,即通过端口查找该服务的进程,如果找到了在返回给jenkins 0表示服务正常启动,如果没找到该服务的进程,则返回给jenkins 1.具体的bat脚本如下:

    复制代码

    @echo off
    setlocal enabledelayedexpansion
    for /f "delims=  tokens=1" %%i in ('netstat -aon ^| findstr %1') do (
    set a=%%i
    goto js
    )
    :js
    ::判断服务是否已经启动,如果启动则返回给jenkins信号0
    if defined a (exit 0) else (exit 1)
    pause>nul
    ::在执行bat脚本的时候在命令后加上参数也就是端口即可

    复制代码

    另外在启动服务的命令执行之后,需要等待几秒再去判断进程是否存在。windows和linux不一样没有类似sleep这样的命令,查阅资料之后我用这一句实现

    等待10秒
    ping /n 10 127.1 >nul

     

    部署java后端项目的时候可能会遇到一个问题,项目引用的jar包在maven中央仓库找不到,解决方法可以参考我另一篇随笔:

    https://www.cnblogs.com/yy-cola/p/9664598.html

     

    jenkins自动化部署项目7 -- 新建job(服务代码部署在linux上)

    jenkins(windows) ----> 应用服务器(linux):

    1。后台java服务:

    与部署在windows上不同的是,这里我选择了在【构建后操作】中使用ssh向远程linux服务器传送jar包和需要执行的命令

     

    复制代码

    sh /root/home/scripts/demo.sh 8007
    cp -r /home/soft/project/sr_f5_manage/sr_f5_manage-0.0.1-SNAPSHOT.jar /home/soft/jarpackage
    #每次构建都会有日志,为了不越来越多,每次运行项目之前会清空下这个文件nohup.out
    cp /dev/null nohup.out
    cd /home/soft/jarpackage
    nohup java -jar sr_f5_manage-0.0.1-SNAPSHOT.jar &
    sleep 10
    #此处之所以加上sleep 10 是因为一开始虽然构建成功,但是netstat -nlp | grep 8007查看进程发现找不到进程,因为项目启动需要时间,尝试着sleep发现就好了

    复制代码

    BUILD_ID=dontKillMe:网上很多人说构建结束,服务进程会被kill,需要加上这个才行。我试了下,不要这个时进程也不会被kill

    复制代码

    #这个就是上面的demo.sh脚本,根据项目端口查找进程,然后kill掉
    port=$1
    if [ "${port}" == "" ];then
    exit 1
    fi
    #根据端口号查询对应的pid,端口号在执行脚本时做为参数
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F "/" '{ print $1 }');
    
    #杀掉对应的进程,如果pid不存在,则不执行
    if [  -n  "$pid"  ];  then
        kill  -9  $pid;
    fi  

    复制代码

     

    ps:这样配置之后,构建还是会有问题,如图。jenkins不会正常结束构建,而是直到超时:

     

    这时就需要在【高级】选项那里勾选上Exec in pty,这样就可以正常了。参考地址:  https://blog.csdn.net/u013066244/article/details/52788407

     

     

     

     2.前端:我们前端使用tomcat,和后端没什么不一样,只有配置的脚本不一样。如图,因为比较简单,就不单独贴出来了

    图中第一行命令是关掉tomcat服务,如果tomcat本身没有运行则构建会报错,因此需要先判断下tomocat服务是否正在运行,我直接用上面的demo.sh脚本去代替这一步

    sh /root/home/scripts/demo.sh 8080

     

    Source files的匹配规则可以了解下:

    * matches zero or more characters, ? matches one character.

     

    jenkins自动化部署项目8 --定时构建

    举几个例子:
    每隔5分钟构建一次
    H/5 * * * *

    每两小时构建一次
    H H/2 * * *

    每天中午12点定时构建一次
    H 12 * * *

    每天下午18点定时构建一次
    H 18 * * *

    在每个小时的前半个小时内的每10分钟
    H(0-29)/10 * * * *

    每两小时45分钟,从上午9:45开始,每天下午3:45结束
    45 9-16/2 * * 1-5

    每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)
    H H(9-16)/2 * * 1-5

     

    我设置的是每天凌晨3点定时构建

    展开全文
  • 使用Jenkins实现自动化部署项目 1 Jenkins简介与安装 Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建测试软件项目、监控外部任务的运行(这...

    使用Jenkins实现自动化部署项目

    1 Jenkins简介与安装

    Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。 通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

    1.1 Jenkins使用前后对比
    1.1.1 传统的项目部署

    img

    1.1.2 Jenkins持续部署

    在这里插入图片描述

    1.2 Jenkins安装与环境配置

    官方下载地址:https://jenkins.io/download/,我选择下载的war包,将war包用xftp传到自己的服务器后,进入你war包存放的位置,输入以下指令后台启动jenkins:

    nohup java -jar jenkins.war --logfile=server.log --httpPort=8088 > server.log 2>& 1 &`
    

    img
    启动成功之后,浏览器输入服务器的ip+Jenkins启动端口号,就可以进入到 Jenkins的登录界面。登录成功之后,我们需要安装Git、Maven和deploy to web container等相应的插件。
    img

    2 配置系统设置

    2.1 新建maven项目

    img

    2.2 配置项目
    2.2.1 General选项

    img

    2.2.2 源码管理设置

    该选项中我们要配置项目的仓库地址和管理该仓库的账号,如下图。
    img

    2.2.3 构建触发器

    该选项中我们可以设置项目的定时构建,让项目每天定时构建一次。

    2.2.4 build与post steps设置

    该选项中我们要配置项目的pom.xml文件的位置以及Maven执行的操作,这里选择clean和install。
    img
    若不知道pom.xml在哪,可以先执行一次构建,构建会把代码克隆下来,我们可以在工作空间中看到。

    2.2.5 构建后操作

    该步骤中选择Send build artifacts Over SSH,这里我们需要填写服务器名称以及相应的路径。图中的Exec command是我们要运行的执令,此处运行了我自己写的一个叫hello.sh的启动脚本,同样,如果我们要一次部署到多台服务器上的话,只需要点击Add Transfer Set再和上图一样设置另一台服务器即可,设置完成之后点击应用和保存。
    img
    img

    3 编写启动脚本

    以上jenkins帮我们做了事情主要有如下几个:

    • 从仓库中克隆代码;
    • maven的clean install
    • 当build成功后,将相应的文件传输到我们指定的服务器中(此处传输的是jar包);
    • 定时重复上述步骤。
      由此可见,jenkins并没有使我们项目启动起来,为此我们需要编写启动脚本。
    #!/bin/bash
    function killproject()
    {
      project_pid=$(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)
      if [  $project_pid > 0 ];then
            echo "项目已经启动了,开始关闭项目,项目pid为: $project_pid "
            kill -9 $(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)
            echo '项目关闭成功,开始重启项目。。。'
      else
            echo "项目未启动,直接启动"
      fi
    }
    function start_project()
    {
            source /etc/profile
            echo '正在启动项目。。。'
            cd /usr/local/jenkins-jar/
            nohup java -jar demo-0.0.1-SNAPSHOT.jar >warpper.log &2>1 &
    
    }
    function check_project()
    {
      check_pid=$(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)
      if [ $check_pid  > 0 ];then
            echo "project is start and  pid = : $check_pid  "
      else
            echo "project are not start"
      fi
    
    }
    killproject
    start_project
    sleep 30
    check_project
    

    代码分析,其中:

    • killproject()函数作用是查看系统中该项目是否已启动,若已启动,则先kill掉该进程,再启动;若未启动,则直接启动。
    • start_project()函数作用是进入我的jar包存储路径,并后台运行,函数中的source /etc/profile目的是使项目可以后台启动(其实我没加的时候,后台启动项目一直不能用,报错找不到java环境)。
    • check_project()函数作用是检查项目是否正常启动,可以在jenkins控制台中看到输出信息。
    • sleep 30是为了等待我的springboot启动完,然后我们查看它的进程id.

    4 构建项目

    • 点击立即构建,就可以完成项目的自动部署了,控制台中我们可以看到项目的启动信息。项目正式部署完成。
      img
    展开全文
  • k8s+Jenkins+GitLab-自动化部署项目
  • 如何自动化部署项目?折腾服务器之旅~本篇文章讲的不是如何把一个项目部署上线,而是如何自动化上线。开发了一个需求管理和发布系统。通过这个系统,可以创建需求、创建发布计划、创建分支、部署到测试环境、部署到...
  • jenkins+码云 实现自动化部署项目到centos 转载:https://binghesf.top/?id=5 转载理由:好文档
  • 一键自动化部署项目

    2020-06-29 09:49:33
    coding持续集成流程搭建(自动部署) Docker+K8S+Jenkins项目实战视频教程(经典) 基于Docker+Jenkins+Git 实现企业持续集成持续部署(CI/CD)
  •  折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky-  lulu/cxf_demo-Maven-Webapp)  系统:centos...
  • 简介折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp)系统:centos...
  • 简介折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp)系统:centos...
  • jenkins+springcloud+docker自动化部署项目容器 1. 配置项目打包自动构建镜像到服务器 创建src/main/docker/dockerfile打包文件 将配置中的pic-userrole服务名改为自己的服务名 FROM java:8 VOLUME /tmp ADD pic-...
  • 最近安装了jenkins,想要使用jenkins来自动化构建、打包、部署项目直接到远程服务器,不用手动打包、上传jar到服务器,然后再运行,经过测试,基本达到了自动化部署。 本篇介绍如果使用jenkins达到自动化部署—...
  • Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三) 目录 Jenkins 之 单节点 搭建自动化部署项目环境 与 实战测试 (三) Jenkins 服务器 环境 何为 单节点搭建自动化部署项目环境? 搭建...
  •  使用前提:有自己的服务器,把项目自动化部署到服务器上。 二、创建一个新的定义 三、选择种类(我这边是asp.net) 四、创建组 选择windows操作系统,勾选验证,复制之后在服务器的powershall...
  • 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp) 系统:centos...
  • Linux自动化部署项目

    2018-12-18 21:54:55
    自动化部署工具jenkins 1.jenkins安装 下载jenkins.war放置到Tomcat 解压目录/webapps 目录下,配置jenkins登陆账号和密码 [ root@vultr conf ] # vi tomcat-users.xml .. .. .. . < role rolename = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,073
精华内容 2,829
关键字:

自动化部署项目