1.登录到jenkins,新建一个项目

2.新建流水线

3.设置保留的天数及份数

4. 添加参数

# 参数
. name: git_repo
type: string
description: 项目在git版本仓库的地址,如 https://gitee.com/xxx/dubbo-demo-service.git . name: app_name
type: string
description: 项目名称,如 dubbo-demo-service . name: git_ver
type: string
description: 项目在git仓库中对应的分支或者版本号 . name: maven
type: choice
description: 编译时使用的maven目录中的版本号部分 . name: mvn_cmd
type: string
default: mvn clean package -Dmaven.test.skip=true
description: 执行编译所用的指令 . name: mvn_dir
type: string
default: ./
description: 在哪个目录执行编译,由开发同事提供 . name: target_dir
type: string
default: ./target
description: 编译的jar/war文件存放目录,由开发同事提供 . name: base_image
type: choice
default:
description: 项目使用的jre底包 . name: image_name
type: string
description: docker镜像名称,如 app/dubbo-demo-service . name: add_tag
type: string
default:
description: 日期-时间,和git_ver拼在一起组成镜像的tag,如:

 5.设置流水线构建脚本

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.fx.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.fx.com/${params.image_name}:${params.git_ver}_${params.add_tag} . && docker push harbor.fx.com/${params.image_name}:${params.git_ver}_${params.add_tag}"
}
}
}
}

6.保存配置

 7.私有仓库创建一个名称为app的项目,属性为私有

 8.执行流水线

9.输入相关参数

 10.构建成功

11.查看私有仓库的app项目是否已经有docker镜像并打开 Blue Ocean可以查看到构建的步骤

12. 准备dubbo-demo-service的k8s资源配置清单文件

[root@hdss7- dubbo-demo-service]# vim deployment.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: dubbo-demo-service
namespace: app
labels:
name: dubbo-demo-service
spec:
replicas:
selector:
matchLabels:
name: dubbo-demo-service
template:
metadata:
labels:
app: dubbo-demo-service
name: dubbo-demo-service
spec:
containers:
- name: dubbo-demo-service
image: harbor.fx.com/app/dubbo-demo-service:master_20200617_1849
ports:
- containerPort:
protocol: TCP
env:
- name: JAR_BALL
value: dubbo-server.jar
imagePullPolicy: IfNotPresent
imagePullSecrets:
- name: harbor
restartPolicy: Always
terminationGracePeriodSeconds:
securityContext:
runAsUser:
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable:
maxSurge:
revisionHistoryLimit:
progressDeadlineSeconds:

13.查看zookeeper的状态

[root@hdss7- bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: . Client address: localhost.
Mode: follower

[root@hdss7- bin]# ./zkCli.sh -server localhost:
[zk: localhost:(CONNECTED) ] ls /
[zookeeper]
[zk: localhost:(CONNECTED) ]

14.应用dubbo-demo-service的k8s的资源配置清单

[root@hdss7- ~]# kubectl create namespace app
[root@hdss7- ~]# kubectl create secret docker-registry harbor --docker-server=harbor.fx.com --docker-username=admin --docker-password=Harbor12345 -n app
[root@hdss7- ~]# kubectl apply -f http://k8s-yaml.fx.com/dubbo-demo-service/deployment.yaml

15.再次查看zookeeper

[zk: localhost:(CONNECTED) ] ls /
[dubbo, zookeeper]
[zk: localhost:(CONNECTED) ]

11.实战交付一套dubbo微服务到k8s集群(4)之使用Jenkins进行持续构建交付dubo服务的提供者的更多相关文章

  1. 实战交付一套dubbo微服务到k8s集群(5)之使用Jenkins进行持续构建交付dubo服务的提供者

    1.登录到jenkins,新建一个项目 2.新建流水线 3.设置保留的天数及份数 4.添加第一个参数:设置项目的名称 5.添加第二个参数:docker镜像名称 6.添加第三个参数:项目所在的git中央 ...

  2. (转)实验文档2:实战交付一套dubbo微服务到kubernetes集群

    基础架构 主机名 角色 ip HDSS7-11.host.com k8s代理节点1,zk1 10.4.7.11 HDSS7-12.host.com k8s代理节点2,zk2 10.4.7.12 HDS ...

  3. kubernetes实战-交付dubbo服务到k8s集群(六)使用blue ocean流水线构建dubbo-consumer服务

    我们这里的dubbo-consumer是dubbo-demo-service的消费者: 我们之前已经在jenkins配置好了流水线,只需要填写参数就行了. 由于dubbo-consumer用的gite ...

  4. 8.实战交付一套dubbo微服务到k8s集群(1)之Zookeeper部署

    1.基础架构 主机名 角色 ip HDSS7-11.host.com K8S代理节点1,zk1 10.4.7.11 HDSS7-12.host.com K8S代理节点2,zk2 10.4.7.12 H ...

  5. 实战交付一套dubbo微服务到k8s集群(1)之Zookeeper部署

    基础架构 主机名 角色 IP地址 mfyxw10.mfyxw.com K8S代理节点1,zk1 192.168.80.10 mfyxw20.mfyxw.com K8S代理节点2,zk2 192.168 ...

  6. kubernetes实战-交付dubbo服务到k8s集群(四)使用blue ocean流水线构建dubbo-demo-service

    使用jenkins创建一个新的项目:dubbo-demo,选择流水线构建 勾选保存构建历史和指定项目为参数化构建项目: 添加构建参数:以下配置项,是王导根据多年生产经验总结出来的甩锅大法: 除了bas ...

  7. kubernetes实战-交付dubbo服务到k8s集群(三)安装配置maven和java运行时环境的底包镜像

    maven 官方地址: 官方地址 下载maven,shdd7-200 # cd /opt/src # wget https://archive.apache.org/dist/maven/maven- ...

  8. kubernetes实战-交付dubbo服务到k8s集群(一)准备工作

    本次交付的服务架构图:因为zookeeper属于有状态服务,不建议将有状态服务,交付到k8s,如mysql,zk等. 首先部署zk集群:zk是java服务,需要依赖jdk,jdk请自行下载: 集群分布 ...

  9. 11.实战交付一套dubbo微服务到k8s集群(3)之dubbo微服务底包镜像制作

    1.下载jre镜像并推送到harbor [root@hdss7- ~]# docker pull registry.cn-hangzhou.aliyuncs.com/yfhub/jre8:8u112 ...

随机推荐

  1. JS最通俗易懂简易轮播实现

    轮播图作为前端比较简易的动画,使用非常频繁,这里记录以便使用 此轮播图为最简易自动播放,非无缝,无按钮,无缩略图和序号 想看全套轮播图可以查看我的分类轮播图全套 html 布局 <div sty ...

  2. vue仿移动端输入框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. html浏览器高度和宽度和其他dom获取

    1.获取网页可见区域的宽度:document.body.clientWidth ; 2.获取网页可见区域的高度:document.body.clientHeight; 3.获取 网页可见区域宽:doc ...

  4. 实验五:shell脚本编程

    项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043133-木腾飞 作业学习目标 1.了解shell 脚本的概念及应用2.掌握shell ...

  5. 记录B端和C端产品的理解

    C 为:Consumer.Client,我们每天都在接触C端产品,为消费者.个人用户或终端用户,比如:微信.头条.抖音.美团等等. B 为:Business,作为职场人士也会经常接触B端产品,通常为企 ...

  6. ActiveMQ 笔记(五)ActiveMQ的传输协议

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 面试思考题: 默认的61616端口如何更改 你生产上的连接协议如何配置的?使用tcp吗? 一.Activ ...

  7. Java实现 LeetCode 798 得分最高的最小轮调 (暴力分析)

    798. 得分最高的最小轮调 给定一个数组 A,我们可以将它按一个非负整数 K 进行轮调,这样可以使数组变为 A[K], A[K+1], A{K+2], - A[A.length - 1], A[0] ...

  8. Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)

    765. 情侣牵手 N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手. 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起. 一次交换可选择任意两人,让他们站起来交换座位. 人和座位用 0 ...

  9. (Java实现) 洛谷 P1098 字符串的展开

    import java.util.ArrayList; import java.util.Scanner; public class zifuchuandezhankai { static Array ...

  10. Java实现 LeetCode 290 单词规律

    290. 单词规律 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非 ...