赞
踩
参数化构建
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软件版本
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}"
}
}
}
}
在harbor中创建一个app项目
第一次就躺枪了。。。。。。。。。
[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仓库:
准备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
需要根据自己构建镜像的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
检查zk是否有注册
[zk: localhost:2181(CONNECTED) 1] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /dubbo
[com.od.dubbotest.api.HelloService]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。