Pipeline
- 配置流水线
-
创建一个new jobs,并选择pipeline
-
配置保留的构建,3天30个
-
配置参数化构建
-
This project is parameterized:
String parameter name Default Value Description app_name 项目的名称,例: dubbo-demo-service Trim the string 填写时去掉前后的空白字符
String parameter name Default Value Description image_name docker镜像名称,例: app/dubbo-demo-service String parameter name Default Value Description git_repo 项目所在的git中央仓库地址,例: String parameter name Default Value Description git_ver 项目在git中央仓库所在的分支或者版本号 String parameter name Default Value Description add_tag docker镜像标签的一部分,日期时间戳,例如: 20201102_2030 String parameter name Default Value Description mvn_dir ./ 编译项目的目录,默认为项目的根目录 String parameter name Default Value Description target_dir ./target 项目编译完成项目后,产生的jar/war包所在的目录 String parameter name Default Value Description mvn_cmd mvn clean package -Dmaven.test.skip=true 执行编译所需的命令 clean 清除缓存 package 不保留在本地, -e 只输出错误 -q 静默
Choice parameter name Choices Description base_image base/jre7:7u80 base/jre8:8u112 项目所用的docker底包镜像 Choice parameter name Choices Description maven 3.6.1-8u232 3.2.5-7u045 执行编译时使用的maven软件版本
-
-
制作Pipeline
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
的私有仓库 -
构建流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SJSE0qof-1625113016649)(https://raw.githubusercontent.com/ma823956028/image/master/picgo/20201104143829.png)] -
点选进度条查看进程
托管k8s
-
制作yaml文件与链接非公开仓库使用的secret
[root@hdss7-200 ~]# cd /data/k8s-yaml/ [root@hdss7-200 k8s-yaml]# mkdir dubbo-demo-service ; cd dubbo-demo-service [root@hdss7-200 dubbo-demo-service]# vim dp.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: dubbo-demo-service namespace: app labels: name: dubbo-demo-service spec: replicas: 1 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.od.com/app/dubbo-demo-service:master_20201103_1119 # 镜像名,注意修改tag号 ports: - containerPort: 20880 protocol: TCP env: - name: JAR_BALL value: dubbo-server.jar imagePullPolicy: IfNotPresent imagePullSecrets: # 链接非公开仓库所用的secret - name: harbor restartPolicy: Always terminationGracePeriodSeconds: 30 securityContext: runAsUser: 0 # 使用root用户启动 schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 revisionHistoryLimit: 7 progressDeadlineSeconds: 600 [root@hdss7-21 ~]# kubectl create ns app [root@hdss7-21 ~]# kubectl create secret docker-registry harbor --docker-server=harbor.od.com --docker-username=admin --docker-password=Harbor12345 -n app [root@hdss7-21 ~]# kubectl apply -f http://k8s-yaml.od.com/dubbo-demo-service/dp.yaml
-
验证zk信息
[root@hdss7-21 ~]# cd /opt/zookeeper/bin [zk: localhost:2181(CONNECTED) 0] ls / [dubbo, zookeeper]