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时会报错

编写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'
            }
        }
    }
}

将脚本上传至gitlab

jenkins新建任务

 

访问eureka:

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)"
            }
        }
    }
}

 

准备测试方法:

当前请求结果是:

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

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

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值