gitlab+jenkins自动构建jar包并发布

一、背景介绍:
  公司软件都是java开发的,一般都会将java代码打包成jar包发布;为了减轻运维部署的工作量,合理偷懒,就需要自动化流程一条龙服务:
开发将代码提交到gitlab--->jenkins自动触发构建--->jenkins将构建好的jar包提交到远程主机--->jenkins重启java服务--->jenkins验证服务是否起来并反馈(此过程需要运维写验证脚本让jenkins执行)
二、jenkins配置
1、安装Gitlab Hook和GitLab插件,安装完成后在构建触发器这会多出一项;记住这个生成的URL会在gitlab中用到;

 1.1、点击Advanced(高级)按钮生成跟giblab交互的token;记住这个token,gitlab上要用到;

  

  这地方注意:
    Allow all branches to trigger this job 允许所有分支触发此作业(默认选项)
    Filter branches by name 按分支名称过滤触发作业
    Filter branches by regex 按正则表达式过滤分支触发
    这地方根据自己的需求去选择,比如只允许某个分支改变则触发作业;

2、Source Code Management(源码管理)

  

   

3、Build(构建)

  

4、安装Publish Over SSH插件,或者在插件管理中直接搜索(Send build artifacts over SSH)也可以

  

  这地方要讲一下,这地方我开了两个Transfers;这个Transfers的作用是在jar包构建完成之后要先做一个动作,将原来的jar包做一个备份,方便出了问题回退;

  Exec command:#脚本很简单就是一个简单的备份

    #!/bin/bash
    . /etc/profile &> /dev/null; . ~/.bash_profile &> /dev/null;
    if [ -f "/data/web/admin-api/admin.jar" ]
    then
      time=`date +%Y-%m-%d-%H:%M`
      cp /data/web/admin-api/admin.jar /data/web/admin-api/srms-admin.jar.$time
    else
      echo "no file"
    fi

  配置第二个Transfers

  

  这地方要注意Source files是两个**号,这是个坑,详情可以点右边的问号有详细解释,这里的两个**表示匹配目录;
      这地方的Exec command就不展示了,需要事先写好放到远端主机主机上;这地方执行必须是绝对路径;
  Remove predix这个地方我之前填的*/target但是我构建的时候控制台提示找不到“eladmin-system/target”然后我就果断把提示中的写到了这个地方;
  Remote directory 这地方要是不写,就要在System configation SSH配置项中定义,两者二选一;我是定义在了Publish over SSH那,所以在上图中没有写,如果两个地方都写了,会目录套目录,最终使jenkins不知道该将文件copy到哪;配置路径(jenkins--->Manage Jenkins--->Configure System--->Publish over SSH),配置完ssh要点一下Test Configuration测试下是否能脸上远端主机;

     

  注意:Manage jenkins--->Configure System--->Gitlab 下图中的配置项需要取消勾选;

  

 三、gitlab配置

  1、打开gitlab网络限制,允许web hook请求过来;

2、gitlab中具体的项目上配置钩子

注意是在具体的项目中设置;

四、通过IDEA提交修改后的代码查看jenkins具体项目的控制台

  代码中随便改点不影响运行的东西,提交测试;

  

 

查看gitlab修改后的是否上传:

  

查看jenkins是否开始构建:

  

查看jenkins控制台:

  

posted @ 2020-12-07 18:17  潇湘神剑  阅读(1564)  评论(0编辑  收藏  举报