docker swarm+jenkins构建spring-cloud服务集群

一、说明

jenkins、gitlab配置搭建请移步上篇博客:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/124236961

本篇主要讲述如何利用jenkins+gitlab+docker swarm构建spring-cloud集群

jenkins安装在192.168.1.119上,但是此机器不属于docker swarm集群机器

在docker swarm的manage节点上执行:docker swarm join-token worker

在119节点拷贝命令执行加入swarm集群。

返回110节点执行:docker promote 将119节点升级为manage,如果jenkins所在的宿主机非manage节点执行stack时会报错

docker swarm+jenkins构建spring-cloud服务集群_第1张图片

编写eureka jenkins流水线脚本

#!groovy
pipeline {
    //在任何可用的代理上执行Pipeline
    agent any
    //环境变量,初始确定后一般不需更改
    tools {
        maven "M3"
    }
    //常量参数,初始确定后一般不需更改
    environment{
        cred_id='gitlab'
        source='http://192.168.1.119:7081/jyw/eureka.git'
        branch='master'
        active='server'

        maven_command='mvn -U clean package -Dmaven.test.skip=true'
        app_name = 'eureka'
        image_name = "192.168.1.119/demo/${app_name}:latest"
    }
    //pipeline的各个阶段场景
    stages {
        stage('Preparation') {
            steps {
              echo "starting fetchCode from ${source}......"
              // Get some code from a GitHub repository
              git credentialsId:cred_id, url:source, branch:branch
            }

        }

        stage('Build Project & Unit Test') {
            steps {
                sh '''
                 $maven_command
              '''
            }
        }
        stage ('镜像拉取') {
            steps {
                sh 'docker pull $image_name'
            }
        }
        stage('deploy') {
            steps {
                sh 'docker stack deploy -c /usr/eureka.yml demo'
            }
        }
    }
}

docker swarm+jenkins构建spring-cloud服务集群_第2张图片

将脚本上传至gitlab

docker swarm+jenkins构建spring-cloud服务集群_第3张图片

jenkins新建任务

docker swarm+jenkins构建spring-cloud服务集群_第4张图片

docker swarm+jenkins构建spring-cloud服务集群_第5张图片

docker swarm+jenkins构建spring-cloud服务集群_第6张图片

docker swarm+jenkins构建spring-cloud服务集群_第7张图片

docker swarm+jenkins构建spring-cloud服务集群_第8张图片 docker swarm+jenkins构建spring-cloud服务集群_第9张图片

访问eureka:

docker swarm+jenkins构建spring-cloud服务集群_第10张图片

eureka搭建成功

其他服务分别创建各自服务的jenkins文件,流水线脚本中改成各自的镜像,stack.xml文件改成各自的服务即可

构建oauth授权服务主要介绍流水线脚本

#!groovy
def harbor_url = "192.168.1.119"
pipeline {
    //在任何可用的代理上执行Pipeline
    agent any
    options {
        buildDiscarder(logRotator(numToKeepStr: '10'))
        skipStagesAfterUnstable()
        timestamps()
    }

    //环境变量,初始确定后一般不需更改
    tools {
        maven "M3"
    }
    //常量参数,初始确定后一般不需更改
    environment{
        cred_id='gitlab'
        source='http://192.168.1.119:7081/jyw/oauth.git'
        branch='master'
        active='uat'

        maven_command='mvn -U clean package -Dmaven.test.skip=true'
        app_name = 'oauth'
        image_name = "192.168.1.119/demo/${app_name}:latest"
    }
    //pipeline的各个阶段场景
    stages {
        stage('Preparation') {
            steps {
              echo "starting fetchCode from ${source}......"
              // Get some code from a GitHub repository
              git credentialsId:cred_id, url:source, branch:branch
            }

        }

        stage('编译&&打包项目'){
             steps {
                sh '''
                 $maven_command
              '''
            }
            
        }

        stage('构建镜像 && 推送镜像') {
            steps {
            
             script{
                 try{
                    def code = sh (
                        script: "docker service inspect demo_${app_name}",
                        returnStatus: true  
                    )
                    // code 为0 代表 grep 找到 了 react-app 相关 的 container
                    if (code==0){
                        echo  "有服务在运行"
                        sh ("docker service rm demo_${app_name}")
                    }
          }catch(e){
                    echo '有服务在'
                }
             }
              
               sh "mvn docker:build "
               sh "docker login -u admin -p Harbor12345 ${harbor_url}"
               sh "docker tag ${app_name}:latest  ${image_name} "
               sh "docker push ${image_name}"
            }
        }
        stage('deploy') {
            steps {
                sh 'docker stack deploy -c /usr/oauth.yml demo'
                sh "docker rmi \$(docker images -f 'dangling=true' -q)"
            }
        }
    }
}
docker swarm+jenkins构建spring-cloud服务集群_第11张图片

 

准备测试方法:

docker swarm+jenkins构建spring-cloud服务集群_第12张图片

当前请求结果是:

docker swarm+jenkins构建spring-cloud服务集群_第13张图片

将方法返回值改为如下内容推提交代码到gitlab:

docker swarm+jenkins构建spring-cloud服务集群_第14张图片

 jenkins重新构建oauth服务,并再次访问

 docker swarm+jenkins构建spring-cloud服务集群_第15张图片

你可能感兴趣的:(jenkins,spring,cloud,devops,git,docker)