当前位置:   article > 正文

234. Jenkins老头持续构建dubbo服务提供者_jenkins构建等待doubbo启动

jenkins构建等待doubbo启动

1. 配置Jenkins流水线

在这里插入图片描述
在这里插入图片描述
参数化构建

1.  name: app_name
    type: string
    description: 项目名称,如 dubbo-demo-service  

2.  name: image_name
    type: string
    description: docker镜像名称,如 app/dubbo-demo-service     
    
3.  name: git_repo
    type: string
    description: 项目在git仓库的地址,如 https://gitee.com/xxx/dubbo-demo-service.git

4.  name: git_ver
    type: string
    description: 项目在git仓库中对应的分支或版本

5. name: add_tag
    type: string
    default:
    description: 日期-时间,和git_ver拼在一起组成镜像的tag,如: 2008132315

6.  name: mvn_dir
    type: string
    default: ./
    description: 编译项目的目录,由开发提供

7.  name: target_dir
    type: string
    default: ./target
    description: 编译完成项目后,产生的jar/war包所在的目录

8.  name: mvn_cmd
    type: string
    default: mvn clean package -Dmaven.test.skip=true
    description: 执行编译所用的指令

9.  name: base_image
    type: choice
    default: base/jre7:7u80
			 base/jre8:8u112
    description: 项目使用的docker底包镜像
        
10.  name: maven
    type: choice
    default:3.6.0-8u181
			3.2.5-6u025
			2.2.1-6u025
    description: 执行编译使用的maven软件版本
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

Pipeline Script

pipeline {
  agent any 
    stages {
      stage('pull') { //get project code from repo 
        steps {
          sh "git clone ${params.git_repo} ${params.app_name}/${env.BUILD_NUMBER} && cd ${params.app_name}/${env.BUILD_NUMBER} && git checkout ${params.git_ver}"
        }
      }
      stage('build') { //exec mvn cmd
        steps {
          sh "cd ${params.app_name}/${env.BUILD_NUMBER}  && /var/jenkins_home/maven-${params.maven}/bin/${params.mvn_cmd}"
        }
      }
      stage('package') { //move jar file into project_dir
        steps {
          sh "cd ${params.app_name}/${env.BUILD_NUMBER} && cd ${params.target_dir} && mkdir project_dir && mv *.jar ./project_dir"
        }
      }
      stage('image') { //build image and push to registry
        steps {
          writeFile file: "${params.app_name}/${env.BUILD_NUMBER}/Dockerfile", text: """FROM harbor.od.com/${params.base_image}
ADD ${params.target_dir}/project_dir /opt/project_dir"""
          sh "cd  ${params.app_name}/${env.BUILD_NUMBER} && docker build -t harbor.od.com/${params.image_name}:${params.git_ver}_${params.add_tag} . && docker push harbor.od.com/${params.image_name}:${params.git_ver}_${params.add_tag}"
        }
      }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在这里插入图片描述
在harbor中创建一个app项目

2. Jenkins—>build

在这里插入图片描述
在这里插入图片描述
第一次就躺枪了。。。。。。。。。

[ERROR] Non-resolvable parent POM for com.od.dubbotest:dubbo-server:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.1.RELEASE from/to spring-snapshots (http://repo.spring.io/snapshot): repo.spring.io: Temporary failure in name resolution and ‘parent.relativePath’ points at wrong local POM @ line 14, column 10: Unknown host repo.spring.io: Temporary failure in name resolution -> [Help 2]

解决方案
在这里插入图片描述
root@jenkins-7c85c8cb57-m6cvg:~# rm -rf .m2
再一次build··········
点击打开 Blue Ocean查看构建历史及过程:
在这里插入图片描述
检查harbor仓库:
在这里插入图片描述

3. 交付dubbo-service到k8s

准备k8s资源配置清单

[root@k8s7-200.host.com ~]# mkdir -p /data/k8s-yaml/dubbo-server
[root@k8s7-200.host.com /data/k8s-yaml/dubbo-server]# cat deployment.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: dubbo-demo-service
  namespace: app
  labels: 
    name: dubbo-demo-service
    tier: provider
spec:
  replicas: 1
  selector:
    matchLabels: 
      name: dubbo-demo-service
  template:
    metadata:
      labels: 
        app: dubbo-demo-service
        name: dubbo-demo-service
        version: master_200813_2300
    spec:
      containers:
      - name: dubbo-demo-service
        image: harbor.od.com/app/dubbo-demo-service:master_200813_2300
        env:
        - name: JAR_BALL
          value: dubbo-server.jar
      imagePullSecrets:
      - name: harbor
      terminationGracePeriodSeconds: 30
  strategy:
    type: RollingUpdate
    rollingUpdate: 
      maxUnavailable: 0
      maxSurge: 1
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

需要根据自己构建镜像的tag来修改image
dubbo的server服务,只向zk注册并通过zk与dobbo的web交互,不需要对外提供服务
因此不需要service资源和ingress资源

1.创建k8s资源
创建K8S资源的操作,在任意node节点上操作即可

2.创建app名称空间
业务资源和运维资源等应该通过名称空间来隔离,因此创建专有名称空间app
kubectl create namespace app

3.创建secret资源
我们的业务镜像是harbor中的私有项目,所以需要创建docker-registry的secret资源:

[root@k8s7-21.host.com ~]# kubectl create secret docker-registry harbor --docker-server=harbor.od.com --docker-username=admin --docker-password=Harbor12345 -n app

检查zk
[root@k8s7-11.host.name /opt/zookeeper]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[root@k8s7-11.host.name /opt/zookeeper]# bin/zkCli.sh -server localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

4.应用资源清单
[root@k8s7-21.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/dubbo-server/deployment.yaml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在这里插入图片描述

检查zk是否有注册
[zk: localhost:2181(CONNECTED) 1] ls /
[dubbo, zookeeper]

[zk: localhost:2181(CONNECTED) 2] ls /dubbo
[com.od.dubbotest.api.HelloService]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/169610
推荐阅读
相关标签
  

闽ICP备14008679号