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 ...
随机推荐
- SSM整合Dubbo登陆案例
登陆案例 一.创建Service项目存放共同数据 1.1 创建实体类 private long id; private String loginName; private String userNa ...
- Java基础学习【字符串倒序输出+排序】
字符串逆序输出 import java.util.*; public class Main{ public static void main(String [] args) { //字符串逆序输出 S ...
- Acwing P284 金字塔 题解
Analysis 一棵树的每颗子树都对应着这棵树 DFS 序的一个区间.本题的序列虽然不是 DFS 序列,但也有该性质.本题中,我们以区间长度作为阶段, F[ l , r ] 表示序列 s[ l ~ ...
- Linux下的Memcache安装 和 安装Memcache的PHP扩展
一.首先安装服务端memcached 1.下载libevent与memcache软件包. 下载memcached: wget http://memcached.org/latestwget http: ...
- 使用docker安装wazuh
使用docker安装wazuh centos下安装wazuh 官方文档: https://documentation.wazuh.com/3.9/installation-guide/installi ...
- for循环实战性能优化之使用Map集合优化
笔者在<for循环实战性能优化>中提出了五种提升for循环性能的优化策略,这次我们在其中嵌套循环优化小循环驱动大循环的基础上,借助Map集合高效的查询性能来优化嵌套for循环 ...
- [WEB安全]无回显代码执行【转载】
原作者:AdminTony 原文链接:http://www.admintony.com/无回显代码执行利用方法.html 在Root-Me上有一道代码执行的题目,其链接为题目链接 0x01 简介 打开 ...
- 使用Xpose突破安卓App禁止截屏限制
WindowManager.LayoutParams.FLAG_SECURE标志的app,这里需要注意下支付宝.网上银行类的app不建议拦截,像支付宝里的付款码,商家拿到后,直接就能扣费,不需要用户这 ...
- web前端兼容性问题
传送门:https://www.cnblogs.com/zhoudawei/p/7497544.html
- legend3---21、查问题或者查插件的时候请搜索对关键词
legend3---21.查问题或者查插件的时候请搜索对关键词 一.总结 一句话总结: 比如要查移动端的js图片裁剪插件,直接搜就“移动端的js图片裁剪插件” 千万记得问题和找资料都搜索对关键词(搜索 ...