Jenkins 微服务持续集成十四(Spring Cloud 微服务四)

本文详细介绍了如何利用Jenkins和Docker进行Spring Cloud微服务的持续集成流程,包括从Jenkinsfile的修改、微服务项目的打包、Docker镜像构建、上传到Harbor仓库,再到拉取镜像、发布应用,最后部署前端静态网站。整个过程覆盖了从代码提交、自动化构建到上线的完整流程。
摘要由CSDN通过智能技术生成

一、Jenkins+Docker+SpringCloud 持续集成流程说明

请添加图片描述
大致流程说明:

  • 开发人员每天把代码提交到 Gitlab 代码仓库。
  • Jenkins 从 Gitlab 中拉取项目源码,编译并打成 jar 包,然后构建成 Docker 镜像,将镜像上传到 Harbor 私有仓库。
  • Jenkins 发送 SSH 远程命令,让生产部署服务器到 Harbor 私有仓库拉取镜像到本地,然后创建容器。
  • 最后,用户可以访问到容器。
服务器名称 IP 地址 安装的软件
安装的软件 192.168.10.20 Gitlab
Gitlab 192.168.10.30 Jenkins,Maven,Git,JDK,Sonarqube,Docker20.10.12-ce
Docker 仓库服务器 192.168.10.40 JDK,Tomcat,Docker20.10.12-ce,Harbor1.9.2
生产部署服务器 192.168.10.50 Docker20.10.12-ce

二、利用 Jenkins 打包微服务项目

1. 生成公共子工程 pom 文件

1.1 修改 Jenkinsfile

//git 的凭证
def git_auth="0b127895-eb97-4f8f-b471-1277e5549b54"
//git 的 URL
def git_url="git@192.168.10.20:test-group/tensquare_back.git"
node {
    stage('pull code') {
        //切换成变量,字符串符号使用双引号
        checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
    }
    stage('check code') {
        //定义SonarQubeScanner工具
        def scannerHome = tool 'sonar-scanner'
        //引用SonarQube系统环境
        withSonarQubeEnv('sonarqube') {
        sh """
            cd ${project_name}
            ${scannerHome}/bin/sonar-scanner
           """
        }
    }
    //添加公共子工程
    stage('make install public sub project') {
        sh "mvn -f tensquare_common clean install"
    }
}

1.2 修改各个 pom.xml

把 parent 父工程 pom.xml 中的 maven 插件代码移至除了 tensquare_common 以外每个子工程 pom.xml 中

修改 tensquare_parent 的 pom.xml
大框和小框中间是多余的部分,删掉或注释。

			<plugin>
                <!--提供打包(将应用打包成可执行的jar包)-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

请添加图片描述
请添加图片描述
tensquare_common 中 pom 配置
不需要动。
请添加图片描述
其他微服务 pom 中的配置部分
应该已经有了,没有就添加。请添加图片描述
提交整个代码
请添加图片描述
jenkinsfile 构建请添加图片描述
请添加图片描述
查看 tensquare_common-1.0-SNAPSHOT.pom

[root@c7-2 ~]#ll /root/repo/com/tensquare/tensquare_common/1.0-SNAPSHOT/tensquare_common-1.0-SNAPSHOT.pom
-rw-r--r-- 1 root root 725 Feb 25 16:07 /root/repo/com/tensquare/tensquare_common/1.0-SNAPSHOT/tensquare_common-1.0-SNAPSHOT.pom

2. 开始编译打包所有微服务项目

2.1 修改 Jenkinsfile 并提交

//git 的凭证
def git_auth="0b127895-eb97-4f8f-b471-1277e5549b54"
//git 的 URL
def git_url="git@192.168.10.20:test-group/tensquare_back.git"
node {
    stage('pull code') {
        //切换成变量,字符串符号使用双引号
        checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
    }
    stage('check code') {
        //定义SonarQubeScanner工具
        def scannerHome = tool 'sonar-scanner'
        //引用SonarQube系统环境
        withSonarQubeEnv('sonarqube') {
        sh """
            cd ${project_name}
            ${scannerHome}/bin/sonar-scanner
           """
        }
    }
    //添加公共子工程
    stage('make install public sub project') {
        sh "mvn -f tensquare_common clean install"
    }
    //打包微服务项目
    stage('make package') {
        sh "mvn -f ${project_name} clean package"
    }
}

提交
请添加图片描述

2.2 打包微服务项目

① 构建 eureka 服务
请添加图片描述
请添加图片描述
查看

[root@c7-2 /var/lib/jenkins/workspace/tensquare_back/tensquare_eureka_server/target]#ls
classes  generated-sources  maven-archiver  maven-status  tensquare_eureka_server-1.0-SNAPSHOT.jar  tensquare_eureka_server-1.0-SNAPSHOT.jar.original
[root@c7-2 /var/lib/jenkins/workspace/tensquare_back/tensquare_eureka_server/target]#pwd
/var/lib/jenkins/workspace/tensquare_back/tensquare_eureka_server/target

② 构建 zuul 服务
Jenkins 服务器中并没有 tensquare_parent 工程,而 zuul 需要依赖这个工程。解决方法:传递父工程进 Jenkins 仓库。

wget http://49.232.8.65/tensquare/tensquare_parent.zip

请添加图片描述
请添加图片描述
开始构建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值