实验架构:

192.168.0.96    gitlab

192.168.0.97    jenkins

192.168.0.98    harbor、docker集群

说明:下面代码编译镜像那一步的代码必须靠左,目的是不要有空格,否则报错,deploy那一步也必须是那种格式,否则报错

安装完jenkins后首先生成pipeline可以用的git链接地址

pipeline {
agent any
stages {
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: 1
template:
metadata:
labels:
name: http-test-dm
spec:
containers:
- name: http-test-con
image: $REPOSITORY
imagePullPolicy: IfNotPresent
ports:
- 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: 1
template:
metadata:
labels:
name: http-test-dm
spec:
containers:
- name: http-test-con
image: 192.168.0.98:5000/library/solo/solo:1.0.2
imagePullPolicy: IfNotPresent
ports:
- 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/81713004

https://blog.csdn.net/a1010256340/article/details/83989059

生成pipeline可以用的git链接地址参照:

https://www.cnblogs.com/FRESHMANS/p/8184874.html
 

pipline中替换tag变量的更多相关文章

  1. 转载:shell脚本之sed使用----替换、变量、转义字符

    sed替换的基本语法为:----s后面跟的是分隔符,原字符串可使用.*这种正则表达式进行整行替换 代码如下: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式, ...

  2. **PHP中替换换行符

    PHP中替换换行符 php 不同系统的换行不同系统之间换行的实现是不一样的linux 与unix中用 \nMAC 用 \rwindow 为了体现与linux不同 则是 \r\n所以在不同平台上 实现方 ...

  3. makefile中的自动化变量$@,$%,$

    转自:http://www.2cto.com/os/201302/191344.html   makefile中的自动化变量$@,$%,$   自动化变量  模式规则中,规则的目标和依赖文件名代表了一 ...

  4. php中替换函数主要用的几个函数strtr(),str_repalce()。

    php中替换函数主要有strtr(),str_repalce()这两个函数,今天介绍下他们的区别和用法, 先来看看这个php字符串替换函数 strtr()的两种用法: strtr(string,fro ...

  5. JSP中的TAG

    http://blog.csdn.net/hongweigg/article/details/12006849 JSP标签有两种实现方法,一种是使用tag 文件,一种是使用tld文件. 1.使用tag ...

  6. SHELL中的特殊变量和结构

    SHELL中的特殊变量和结构 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置 ...

  7. Shell命令替换与变量替换

    命令替换 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出.命令替换的语法: `command` 注意是反引号,不是单引号,这个键位于 Esc 键下方.下面的例子中,将命令执 ...

  8. Android开发中使用static变量应该注意的问题

    package com.highxin.launcher01; import java.util.ArrayList; import java.util.HashMap; import java.ut ...

  9. pycharm中添加PATH变量

    最近在pycharm中run程序,终端terminal没有问题,在pycharm找不到$PATH中的变量值,如下图所示 同样的命令,在终端敲就没毛病,终端echo $PATH的时候,显示的是有cuda ...

随机推荐

  1. js判断radio选中状态

    var radios = document.getElementsByName("radiosName"); var checked = false; for ( var j = ...

  2. C# 中文序列按笔画排序

    问题:给定一串含中文的序列,按首字符的笔画数排序 因为默认是按拼音来排序的, 借助Globalization命名空间,包含定义区域性相关信息的类,这些信息包括语言,国家/地区,正在使用的日历,日期.货 ...

  3. c语言数组的概念和指针的加减使用

    //数组变量名:就是一个地址:就是数组首元素的地址#include <stdio.h> int main(void) { int age[5] = {10,50,100,22,44}; / ...

  4. Halting Problem

    Halting Problem: 传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4049 总结一个小规律:题目中给的 ...

  5. Python字符串转十六进制进制互转

    def str_to_hex(s): return ' '.join([hex(ord(c)).replace('0x', '') for c in s]) def hex_to_str(s): ) ...

  6. nginx压力测试和并发预估

    一.Nginx并发预估 预估算法:{(?G)*1024-system}/请求大小 (?G):表示内存大小1024:表示内存容量标准进制system:表示系统和服务占用的额外内存和需要预留的内存请求大小 ...

  7. 2018-2019-2 《网络对抗技术》Exp7 网络欺诈防范 20165326

    网络欺诈防范 实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术, ...

  8. 树莓派VNC

    sudo raspi-config Interfacing Options -> VNC 1.停止VNC窗口: vncserver -kill:1 2.修改密码 vncpasswd 3.重启服务 ...

  9. K8S集群Master高可用实践

    K8S集群Master高可用实践    https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...

  10. Linux ps -ef vs. ps aux(ps -aux)

    ps aux.ps -aux.ps -ef之间的区别 - wynter_的博客 - CSDN博客 https://blog.csdn.net/wynter_/article/details/73825 ...