实验架构:192.168.0.96    gitlab192.168.0.97    jenkins192.168.0.98    harbor、docker集群说明:下面代码编译镜像那一步的代码必须靠左,目的是不要有空格,否则报错,deploy那一步也必须是那种格式,否则报错安装完jenkins后首先生成pipeline可以用的git链接地址pipeline {agent anystages {stage('git checkout'){steps {echo 'git clone'checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'c32a3a24-2c9d-4c8d-b456-9d6d0badf3a2', url: 'http://192.168.0.96:8081/zihao/test.git']]])}}stage('maven build'){steps {echo 'maven build'sh '''export JAVA_HOME=/usr/local/jdk1.8.0_171//usr/local/apache-maven-3.5.4/bin/mvn clean package -Dmaven.test.skip=true'''}}stage('docker build and push images'){steps {
echo 'docker build and push images'
sh '''
REPOSITORY=192.168.0.98:5000/library/solo/solo:${Tag}
cat >Dockerfile<<EOF
FROM 192.168.0.98:5000/library/tomcat-85:latest
RUN rm -rf /usr/local/tomcat/webapps/ROOT/
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
WORKDIR /usr/local/tomcat
EXPOSE 8080
CMD ["./bin/catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
docker login -u admin -p Harbor12345 192.168.0.98:5000
docker push $REPOSITORY
'''}}stage('deploy'){steps {
echo 'deploy'
sh '''
REPOSITORY=192.168.0.98:5000/library/solo/solo:${Tag}
cat >deployment.yaml<<EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: http-test-dm
spec:replicas: 1template:metadata:labels:name: http-test-dmspec:containers:- name: http-test-conimage: $REPOSITORYimagePullPolicy: IfNotPresentports:- containerPort: 80
EOF
'''}}}
}把上面的$REPOSITORY镜像替换成真实的镜像,执行完查看结果如下:[root@bogon ~]# ls /root/.jenkins/workspace/pipline-test/
CHANGE_LOGS.html    deployment.yaml     Dockerfile   package.json       PULL_REQUEST_TEMPLATE.md  scripts  说明.htm
CODE_OF_CONDUCT.md  deploy.sh           gulpfile.js  package-lock.json  README.md                 src
CONTRIBUTING.md     docker-compose.yml  LICENSE      pom.xml            read.txt                  target
[root@bogon ~]# cat /root/.jenkins/workspace/pipline-test/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: http-test-dm
spec:replicas: 1template:metadata:labels:name: http-test-dmspec:containers:- name: http-test-conimage: 192.168.0.98:5000/library/solo/solo:1.0.2imagePullPolicy: IfNotPresentports:- containerPort: 80说明:远程执行命令前提需要安装ssh agent插件,现在ssh agent的认证,已不支持明文用户密码,而只能用加密方式实现。所以先在jenknis和docker集群之间实现ssh免密码rsa证书登陆。私钥放jenkins,公钥放在docker集群,然后,将私钥拿出来,写入到jenkins凭据参照:https://blog.csdn.net/weixin_34067980/article/details/86444168
参照视频:链接:https://pan.baidu.com/s/10qtI5BlNFM2A6bMkR7FEEA   提取码:0pwt
脚本参照:https://blog.csdn.net/jackyzhousales/article/details/81713004https://blog.csdn.net/a1010256340/article/details/83989059生成pipeline可以用的git链接地址参照:https://www.cnblogs.com/FRESHMANS/p/8184874.html

转载于:https://www.cnblogs.com/effortsing/p/10470163.html

pipline中替换tag变量相关推荐

  1. shell中的命令替换和变量替换

    一.命令替换 可以用'command', 也可以用$(command). 二者是有区别的,先看一下'command'(注意:这里不是引号,而反引号) 1. `command' 用来做命令替换 2. $ ...

  2. Java中的宏变量,宏替换详解。

    转载自 Java中的宏变量,宏替换详解. 群友在微信群讨论的一个话题,有点意思,特拿出来分享一下. 输出true false 来看下面这段程序,和群友分享的大致一样. public static vo ...

  3. linux中对shell变量内容的修改和替换

    鸟哥私房菜中,对这一内容的描述,简直让人看不懂,好不容易找来文章可以帮助理解下. linux中对shell变量内容的修改和替换 1.变量内容修改 file=/dir1/dir2/dir3/my.fil ...

  4. linux 变量替换字符串,shell中常用的变量处理、字符串操作(之一)

    在shell中,当我们已经获取到某个变量的变量值的时候,可能还需要对变量值进行一定的处理,才能到我们最终想要的结果,今天我们就来聊聊shell中常见的变量处理方法,我们通常会对变量进行如下处理. 一. ...

  5. 线程池中使用条件变量和信号量的性能比较

    2019独角兽企业重金招聘Python工程师标准>>> 面试的时候经常被问到互斥量,条件变量和信号量之间的问题.比如前几天华为面试就被问到互斥量和信号量的区别,说到互斥量也可以使用一 ...

  6. python重命名文件pycharm_Python中批量修改变量名太费劲?Pycharm中使用重命名一次搞定...

    标签:rename   current   变量   阅读   tor   小伙伴   search   其他   就是如果程序中有一个变量被用得比较多,但名字起得不是很好,导致其他阅读程序的人搞不清 ...

  7. php中的替换函数,php字符串中替换函数是什么

    php字符串中替换函数有两种,分别是:1.substr_replace函数,用于把字符串的一部分替换为另一个字符串:2.str_replace函数,能够使用一个字符串替换字符串中的另一些字符. 本文操 ...

  8. 在docker镜像中加入环境变量

    原文链接 前言 reference:https://vsupalov.com/docker-build-time-env-values/ 很多时候,我们需要在docker镜像中加入环境变量,本人了解的 ...

  9. java怎么给类中的私有变量赋值_Java核心技术笔记分享------第二章 类与对象

    对象与类 一.面向对象思想的概述 1>面向对象与面向过程: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象. 面向对 ...

最新文章

  1. POJ 1552 Doubles (C++ STL set使用)
  2. 需求入门 - 获取需求方法:Nine Boxes
  3. 批量处理---提高处理速度
  4. 用RPC OVER HTTPS发布Exchange(续)
  5. 括号配对问题----栈模拟
  6. 怎么判断浮点数的有效位数_JavaScript的数据类型及判断
  7. 超详细!联想小新700黑苹果双系统完整教程(1)
  8. html泰勒展开,【转载】泰勒展开式
  9. CnOpenData中国高新技术企业专利统计数据
  10. 如何在scrapy框架里进行调试嘞
  11. 计算机rom和硬盘,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
  12. iPhone销量下降,这两种方法可以把Android和iPhone手机投屏到电脑上!
  13. 国内如何下载并使用LINE(免费提供apk安装包)
  14. 昆明理工大学计算机毕业论文,论文的文本格式和装订顺序-昆明理工大学教务处.doc...
  15. ubuntu下载谷歌云盘大文件
  16. 三极管饱和区的详细解释
  17. 一眼就会table隔行换色、table表头固定、隔行色、鼠标移动行换色
  18. LiveGBS GB28181流媒体服务-产品介绍及相关资源
  19. Python多线程 坑Unhandled exception in thread started by Error in sys.excepthook
  20. python教程cos_带有Python示例的math.cos()方法

热门文章

  1. 某企业管理软件开发公司校园招聘的小组讨论面试题
  2. jsonobject修改key的值_修改JSONArray里所有key的值
  3. cname 别名记录 解析过程_云解析是什么?需要购买吗?
  4. 计算机分级时无法度量视频播放,Win7 64位系统电脑评分出现“无法度量视频播放性能”怎么解决...
  5. mysql数据库 on 命令_MySql 数据库基础命令
  6. 初始化mysql的数据库失败_初始化mysql的数据库失败怎么办
  7. python学习-字典(哈希表、创建、插值、取值、keys、values、items、copy、fromkeys)
  8. oracle删除unique key,概述Oracle Unique约束
  9. latex 不等于_生活中养成这8个习惯,就算不运动,照样瘦!
  10. iphone全部机型_苹果12,十三岁iPhone最鸡贼的一次发布会