一、背景介绍:
  公司软件都是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控制台:

  

gitlab+jenkins自动构建jar包并发布的更多相关文章

  1. Linux+Jenkins自动构建服务器包

    何时使用: 测试过程中我们需要持续构建一个软件项目,为避免重复的手动下载.解压操作,我们需要搭建一个能够自动构建的测试环境,当代码有更新时,测试人员只需点一下[构建]即可拉取最新的代码进行测试(也可设 ...

  2. gitlab jenkins 自动构建

    工作中有这样一种需求: 每次提交代码之后,都自动执行 单元测试脚本,进行单元测试 jenkins监听项目的某个分支,设置运行脚本,设置一个url作为回调 利用gitlab的钩子,在每次有提交之后,触发 ...

  3. 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

    写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...

  4. Gitlab使用Webhook实现Push代码后的jenkins自动构建

    本文出自https://www.cnblogs.com/kevingrace/p/6479813.html 怕以后找不到,所以先写到自己博客中 Gitlab利用Webhook实现Push代码后的jen ...

  5. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

  6. 构建Maven项目自动下载jar包

    使用Maven 自动下载jar包 右键单击项目,将项目 转换成Maven 项目 然后进去Maven官网 http://mvnrepository.com/ 这里有大量的jar包供我们使用,比如我现在要 ...

  7. 【转】构建Maven项目自动下载jar包

    原文地址:https://blog.csdn.net/gfd54gd5f46/article/details/54973954 使用Maven 自动下载jar包 右键单击项目,将项目 转换成Maven ...

  8. 实战:向GitHub提交代码时触发Jenkins自动构建

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...

  9. DEVOPS技术实践_02:jenkins自动构建项目

    一.用户名密码错误 打开jenkins发现用户名密码错误,解决 1.1 找到config.xml文件 [root@jenkins-master ~]# ll -a drwxr-xr-x. root r ...

随机推荐

  1. fedora访问win10共享

    sudo mount -t cifs -o username=user,password=123 //192.168.31.20/aa /home/liao/win

  2. Linux Troubleshooting 超实用系列 - Disk Analysis

    笔者历史文章: https://github.com/CarlJi/words 关于磁盘的使用,实际生产中以下问题会较为常见: No space left on device - 空间不足 Disk ...

  3. arthas学习图文记录

    Arthas 是阿里开源的 Java 诊断工具.在线排查问题,无需重启:动态跟踪 Java 代码:实时监控 JVM 状态.Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采 ...

  4. 『忘了再学』Shell基础 — 16、位置参数变量

    目录 1.位置参数变量$n 2.位置参数变量$*和$@ 3.位置参数变量$# 位置參数变量的作用主要用于脚本的传参. 位置參数变量的名称和作用都是确定不能改变的,但是该变量的内容是可以更改的,也就是变 ...

  5. RabbitMQ消息可靠性、死信交换机、消息堆积问题

    目录 消息可靠性 生产者消息确认 示例 消费者消息确认 示例 死信交换机 例子 高可用问题 消息堆积问题 惰性队列 参考 消息可靠性 确保消息至少被消费了一次(不丢失) 消息丢失的几种情况: 消息在网 ...

  6. Python Django 功能模块

    Python Django模块 Django模块,是针对有django基础,对django功能进行模块化,方便下次使用. 一.注册模块 该注册采用邮箱验证,注册成功后会发送激活链接到邮箱. 邮箱验证参 ...

  7. point pair feature在2D图像匹配中的应用

    point pair feature在2D图像匹配中的应用 point pair feature(ppf) @article{BertramDrost2010ModelGM, title={Model ...

  8. 看看CabloyJS工作流引擎是如何实现Activiti边界事件的

    CabloyJS内置工作流引擎的基本介绍 1. 由来 众所周知,NodeJS作为后端开发语言和运行环境,支持高并发.开发效率高,有口皆碑,但是大多用于数据CRUD管理.中间层聚合和中间层代理等工具场景 ...

  9. 浏览器代理user-agent

    两种方法: 法1:浏览器地址栏输入:about://version,然后复制用户代理: 如果法1不行,法2肯定可以. 法2:打开任意浏览器,输入任意网址,下面以火狐和百度网址为例来进行说明: 打开火狐 ...

  10. 6大优势、2种类型,一文吃透动态应用安全测试(DAST)

    在在上篇文章中中,我们了解了 SAST 的概念.优劣和使用的工具,并在文章里提到了另一个软件安全领域里的重要技术 DAST.本文将会详细介绍 DAST 的概念.重要性及其工作原理.   DAST(Dy ...