pipline中替换tag变量
实验架构:
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变量的更多相关文章
- 转载:shell脚本之sed使用----替换、变量、转义字符
sed替换的基本语法为:----s后面跟的是分隔符,原字符串可使用.*这种正则表达式进行整行替换 代码如下: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式, ...
- **PHP中替换换行符
PHP中替换换行符 php 不同系统的换行不同系统之间换行的实现是不一样的linux 与unix中用 \nMAC 用 \rwindow 为了体现与linux不同 则是 \r\n所以在不同平台上 实现方 ...
- makefile中的自动化变量$@,$%,$
转自:http://www.2cto.com/os/201302/191344.html makefile中的自动化变量$@,$%,$ 自动化变量 模式规则中,规则的目标和依赖文件名代表了一 ...
- php中替换函数主要用的几个函数strtr(),str_repalce()。
php中替换函数主要有strtr(),str_repalce()这两个函数,今天介绍下他们的区别和用法, 先来看看这个php字符串替换函数 strtr()的两种用法: strtr(string,fro ...
- JSP中的TAG
http://blog.csdn.net/hongweigg/article/details/12006849 JSP标签有两种实现方法,一种是使用tag 文件,一种是使用tld文件. 1.使用tag ...
- SHELL中的特殊变量和结构
SHELL中的特殊变量和结构 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置 ...
- Shell命令替换与变量替换
命令替换 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出.命令替换的语法: `command` 注意是反引号,不是单引号,这个键位于 Esc 键下方.下面的例子中,将命令执 ...
- Android开发中使用static变量应该注意的问题
package com.highxin.launcher01; import java.util.ArrayList; import java.util.HashMap; import java.ut ...
- pycharm中添加PATH变量
最近在pycharm中run程序,终端terminal没有问题,在pycharm找不到$PATH中的变量值,如下图所示 同样的命令,在终端敲就没毛病,终端echo $PATH的时候,显示的是有cuda ...
随机推荐
- js判断radio选中状态
var radios = document.getElementsByName("radiosName"); var checked = false; for ( var j = ...
- C# 中文序列按笔画排序
问题:给定一串含中文的序列,按首字符的笔画数排序 因为默认是按拼音来排序的, 借助Globalization命名空间,包含定义区域性相关信息的类,这些信息包括语言,国家/地区,正在使用的日历,日期.货 ...
- c语言数组的概念和指针的加减使用
//数组变量名:就是一个地址:就是数组首元素的地址#include <stdio.h> int main(void) { int age[5] = {10,50,100,22,44}; / ...
- Halting Problem
Halting Problem: 传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4049 总结一个小规律:题目中给的 ...
- Python字符串转十六进制进制互转
def str_to_hex(s): return ' '.join([hex(ord(c)).replace('0x', '') for c in s]) def hex_to_str(s): ) ...
- nginx压力测试和并发预估
一.Nginx并发预估 预估算法:{(?G)*1024-system}/请求大小 (?G):表示内存大小1024:表示内存容量标准进制system:表示系统和服务占用的额外内存和需要预留的内存请求大小 ...
- 2018-2019-2 《网络对抗技术》Exp7 网络欺诈防范 20165326
网络欺诈防范 实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术, ...
- 树莓派VNC
sudo raspi-config Interfacing Options -> VNC 1.停止VNC窗口: vncserver -kill:1 2.修改密码 vncpasswd 3.重启服务 ...
- K8S集群Master高可用实践
K8S集群Master高可用实践 https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...
- Linux ps -ef vs. ps aux(ps -aux)
ps aux.ps -aux.ps -ef之间的区别 - wynter_的博客 - CSDN博客 https://blog.csdn.net/wynter_/article/details/73825 ...