Jenkins+GitLab部署Maven多项目

Jenkins+GitLab部署

最近学习尚硅谷Jenkins视频,视频是使用svn作为版本控制,工作中用的是GitLab,并且工作中项目是微服务架构,需要同时添加多个git项目,所以想以git实验一下,完成后写了这个记录下来,写了第一篇博客,以备后用。

一、目标

通过Jenkins+GitLab实现Maven多项目自动打包部署

二、部署环境

  1. 操作系统 Windows10(192.168.101.174) 、CentOS7 (192.168.101.200)各一台
  2. 软件:tomcat8.0 、Jenkins、GitLab 、git

三、安装说明

  1. CentOS7安装GitLab http://192.168.101.200:8888/
  2. Windows10安装git
  3. Windows10通过tomcat 部署jenkins.war启动 http://192.168.101.174:8888/jenkins/
  4. 测试工程分为2个部分
    1. hello 为一个SpringBoot程序
    2. jenkins 为一个Maven父工程
    3. start 为一个Maven子模块,SpringBoot项目
    4. support 为一个entity子工程,start工程会引用support中的实体类
  5. 最后将工程部署到CentOS7系统

四、部署流程

  1. 在CentOS安装GitLab ,参考文章如下:
    https://blog.csdn.net/duyusean/article/details/80011540

  2. 在Windows10部署用tomcat8启动jenkins.war,据说可以使用命令启动

  3. 编写工程名为hello的SpringBoot程序 并上传到GitLab 访问路径为:http://192.168.101.200:9090/hello

    hello项目gitLab地址:[email protected]:group/hello.git
    
    Controller代码:
    package com.example.hello;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    @RestController
    @EnableAutoConfiguration
    public class TestController {
        @RequestMapping("/hello")//HTTP请求
        public String test() {
            System.out.println("TestController>>>test>>>is running....return a string");
            return "HelloWorld!";
        }
    }
    
    

  4. 编写工程名为jenkins的Maven工程 、start、support子工程分别上传到GitLab ,jenkins工程pom.xml

    
    
        4.0.0
        pom
        
            support
            start
        
        com.xxx
        jenkins
        1.0-SNAPSHOT
    
    
    hello项目gitLab地址:[email protected]:group/jenkins.git
    start项目gitLab地址:[email protected]:group/start.git
    support项目gitLab地址:[email protected]:group/support.git
    
  5. Jenkins基础配置

    • 初次启动会出现此页面,根据红色提示的路径,拷贝文件initialAdminPassword中的一段字符串

      Jenkins+GitLab部署Maven多项目_第1张图片

    • 进入系统管理—》全局安全配置

      Jenkins+GitLab部署Maven多项目_第2张图片

    • 进入系统管理—》插件管理 在线安装Gitlab Authentication plugin 、Gitlab Hook Plugin、GitLab Plugin、Build Authorization Token Root Plugin、Multiple SCMs plugin(配置多个git地址)、Publish Over SSH

      Jenkins+GitLab部署Maven多项目_第3张图片

    • 进入系统管理—》系统设置 配置Jenkins Location下的Jenkins URL http://192.168.101.174:8888/jenkins/

      在这里插入图片描述

      Jenkins+GitLab部署Maven多项目_第4张图片

    • 进入系统管理—》全局工具配置 需要配置Maven 配置、JDK、Git、Maven

      Jenkins+GitLab部署Maven多项目_第5张图片

      Jenkins+GitLab部署Maven多项目_第6张图片

  6. 任务配置

    • 新建任务–》HELLO 选择一个“构建一个自由风格的软件项目”

      Jenkins+GitLab部署Maven多项目_第7张图片

    • 源码管理

      Jenkins+GitLab部署Maven多项目_第8张图片

      Jenkins+GitLab部署Maven多项目_第9张图片

    • 构建触发器

      Jenkins+GitLab部署Maven多项目_第10张图片

    • 构建

      Jenkins+GitLab部署Maven多项目_第11张图片

  7. GitLab 配置hello项目

    • GitLab最新版本需要修改Outbound requests才可以使用钩子程序

      Jenkins+GitLab部署Maven多项目_第12张图片

    • GitLab配置git Push代码触发hello项目钩子程序

      Jenkins+GitLab部署Maven多项目_第13张图片

    • 填写enkins生成的URL和Token

      Jenkins+GitLab部署Maven多项目_第14张图片

    • 添加webHook后,点击【Test】下的Push events 进行触发测试

      Jenkins+GitLab部署Maven多项目_第15张图片

    • 测试成功,触发Jenkins的HELLO项目的构建

      在这里插入图片描述

    • 进入Jenkins界面,可以看见HELLO项目正在构建,可以点击“#数字”下面选择控制台输出查看构建过程,构建成功后,就可以通过浏览器访问http://192.168.101.200:9090/hello 输出"HelloWorld!" 即为部署成功!

      Jenkins+GitLab部署Maven多项目_第16张图片

  8. GitLab 配置jenkins项目

    • 新建项目

    • 源码管理,配置maven父工程jenkins的git地址及认证,认证同hello项目,父工程不用配置jar路径

      Jenkins+GitLab部署Maven多项目_第17张图片

    • 源码管理,配置maven子工程support的git地址及认证,认证同hello项目,子工程需要配置子目录,子目录名称与工程名一致,否则从GitLab上取代码是生成的项目结构不正确,导致maven打包失败。

      Jenkins+GitLab部署Maven多项目_第18张图片

    • 源码管理,配置maven子工程start的git地址及认证,认证同hello项目

      Jenkins+GitLab部署Maven多项目_第19张图片

    • 构建触发器 父工程和两个子工程都用相同的URL和Token配置到GitLab上的各个项目的钩子调用

      Jenkins+GitLab部署Maven多项目_第20张图片

    • 构建 使用Maven打包,跳过测试

      Jenkins+GitLab部署Maven多项目_第21张图片

    • 构建后操作 写shell脚本 多个工程启动工程需要配置多个Transfer Set ,脚本的主要环节为停掉现有服务、备份原jar包、拷贝新jar文件。

      Jenkins+GitLab部署Maven多项目_第22张图片

    • GitLab配置Jenkins父工程的钩子

      Jenkins+GitLab部署Maven多项目_第23张图片

    • GitLab配置start子工程的钩子

      Jenkins+GitLab部署Maven多项目_第24张图片

    • GitLab配置support工程的钩子

      Jenkins+GitLab部署Maven多项目_第25张图片

    • 测试配置同hello

你可能感兴趣的:(Jenkins)