jenkins openshift 持续集成
参数部分没有
不要照抄,只供参考
需求:
CI利用confd+etcd生成配置文件
CI把git的COMMIT 传到openshift的buildconfigs
#!/bin/bash
echo
echo
echo "第一阶段:生成配置文件"
echo
echo
Output_Path=/data/html/nightly/$ENV_NAME/$Project_Name echo "项目名【$Project_Name】"
echo "发布的环境【$ENV_NAME】"
echo "发布的git分支【$GIT_BRANCH】 "
echo "发布的GIT COMMIT【$GIT_COMMIT】" /data/root/.jenkins/downtown_scripts/oc_confd_get_config_.sh $ENV_NAME $Project_Name $WORKSPACE $Output_Path echo "+++++++++配置文件生成完毕++++++++++" echo
echo
echo "第二阶段:开始更新build配置"
echo
echo echo "正在更新buildconfigs设置>>>>>>>>"
Output_Path_File=/data/html/nightly/$ENV_NAME/$Project_Name/oc_status/${Project_Name}.json
mkdir -p /data/html/nightly/$ENV_NAME/$Project_Name/oc_status
NAMESPACE=$ENV_NAME
NAME=$Project_Name #获取目前的状态
curl -k \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
$ENDPOINT/oapi/v1/namespaces/$NAMESPACE/buildconfigs/$NAME >/dev/null > $Output_Path_File #替换GIT COMMIT
REF_Value=`cat $Output_Path_File |jq -r '.spec | .source | .git | .ref'`
sed -i s/"$REF_Value"/"$GIT_COMMIT"/g $Output_Path_File
Build_Configs_Status=`cat $Output_Path_File` #更新到oc api curl -k \
-X PUT \
-d @- \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
$ENDPOINT/oapi/v1/namespaces/$NAMESPACE/buildconfigs/$NAME >/dev/null >& << EOF
$Build_Configs_Status
EOF
echo
echo
echo "+++++++更新后的buildconfigs配置+++++++++" curl -k \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
$ENDPOINT/oapi/v1/namespaces/$NAMESPACE/buildconfigs/$NAME >/dev/null echo "+++++++更新后的buildconfigs配置+++++++++"
echo
echo
附上/data/root/.jenkins/downtown_scripts/oc_confd_get_config_.sh
#!/bin/bash
ENV_NAME=$
Project_Name=$
WORKSPACE=$
Output_Path=$
Config_Templates_Path=$Output_Path/config-templates
Confd_Path=$Output_Path/confd echo "配置文件生成路径【$Output_Path】"
echo "jenkins工作空间路径【$WORKSPACE】"
#拷贝配置文件 rm -rf $Output_Path
mkdir -p $Output_Path
cd $WORKSPACE
cp -Rf * $Output_Path
ls $Output_Path #先结束掉该项目的confd进程
ps -ef | grep $Confd_Path | grep -v grep | awk '{ print "kill -9 " $2}' | bash echo "==============================="
echo "[confd] for $ENV_NAME-$Project_Name killed"
echo "===============================" #清理confd项目目录
rm -rf $Confd_Path
mkdir -p $Confd_Path/conf.d
mkdir -p $Confd_Path/templates
ls $Confd_Path ##复制配置文件到指定目录
find $Config_Templates_Path -type f -name "*.*" -exec cp -fr {} $Confd_Path/templates \; echo ========templates copied=====================
ls $Config_Templates_Path/*/*
echo ========templates copied===================== ##生成模式化文件format_standard.txt
##格式为:文件名 文件路径 ##清空format_standard.txt文件
echo "" > $Confd_Path/format_standard.txt ##提取Config_Templates_Path目录内的子目录作为变量,并提出所有文件名
Config_Templates_L2_List=`cd $Config_Templates_Path ; find $PWD | xargs ls -dl | grep -v "^d" | awk 'BEGIN{FS="/"} {print $(NF-1)"/"$NF}'` #i代表的是$Config_Templates_L2_List输出出来的所有文件的相对路径
echo ========config file need to be generate =====================
echo "${Config_Templates_L2_List}"
echo ========config file need to be generate ===================== cd $Confd_Path for i in $Config_Templates_L2_List
do
if [ -f $Output_Path/$i ];then
find $Output_Path/$i -type f -name "*.*" |awk 'BEGIN{FS="/"} {printf("%30s\t%s\n",$NF,$0)}' >> $Confd_Path/format_standard.txt
fi
done for i in $Config_Templates_L2_List
do
if [ -f $Output_Path/config/$i ];then
find $Output_Path/config/$i -type f -name "*.*" |awk 'BEGIN{FS="/"} {printf("%30s\t%s\n",$NF,$0)}' >> $Confd_Path/format_standard.txt
fi
done echo "################# format_standard.txt############"
cat $Confd_Path/format_standard.txt
echo "################# format_standard.txt############" ##遍历格式化文件并生成模板文件
cd $Confd_Path
cat format_standard.txt |awk 'NR>1' |while read F_CONFIG_NAME F_CONFIG_PATH
do
##生成模板文件
cat << EOF > conf.d/$F_CONFIG_NAME.toml
[template]
#模板文件,基于它进行修改
src = "$F_CONFIG_NAME"
#目标文件地址
dest = "$F_CONFIG_PATH"
#keys是在etcd上订阅消息的前缀
keys = [
"",
] #更新配置后的命令
changed_log_cmd = "echo $ENV_NAME-$Project_Name configuration changed `date` >> /tmp/confd_changed.log"
EOF
done #显示该项目的confd进程数
ps -ef | grep $Confd_Path | grep -v grep | wc -l export ETCDCTL_API=2
nohup /data/app/confd/bin/confd -config-file /data/app/confd/$ENV_NAME/confd.config -confdir $Confd_Path/ -username root -password Downtown2013 -basic-auth true > $Confd_Path/confd.log 2>&1 & sleep 5
#显示该项目的confd日志
echo "====confd_logs last 100 lines================="
tail -n 100 $Confd_Path/confd.log
echo "====confd_logs last 100 lines================="
##confd
jenkins openshift 持续集成的更多相关文章
- 【iOS】Jenkins Gitlab持续集成打包平台搭建
Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...
- 使用jenkins构建持续集成平台
jenkins + Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...
- 用MSBuild和Jenkins搭建持续集成环境(2)
http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: ...
- jenkins jmeter持续集成批处理jmx脚本
这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...
- RF+Jenkins构建持续集成
引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...
- Jenkins+Git 持续集成
持续集成是必要的! 希望达到的效果是:开发同事签入代码后,对应的站点可以自动实现更新.目前还只在在内部服务器上实现开发环境中的站点更新,不涉及到线上的发布. 目前使用Jenkins实现这样的持续集成. ...
- 使用Jenkins进行持续集成ionic3项目
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 网上大多数是关于.net web网站以及 ...
- 使用jenkins实现持续集成
一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预: 它需要有专门的集成服务器来执行集成构建: 它需要有代 ...
- jenkins+github持续集成中的坑
1.前言 刚开始开发自己的独立博客的时候,每次发布都要手动打包,上传服务器,杀tomcat进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...
随机推荐
- Intersection Observer API 可以让你知道被观察元素何时进入或退出浏览器的视口
google 文档 https://developers.google.cn/web/updates/2016/04/intersectionobserver MDN 文档 https://devel ...
- 数据库高分笔记01:事务ACID
作者:arccosxy 转载请注明出处:http://www.cnblogs.com/arccosxy/ 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据库应 ...
- jquery <img> 图片懒加载 和 标签如果没有加载出图片或没有图片,就显示默认的图片
参考链接:http://www.jq22.com/jquery-info390 或压缩包下载地址:链接:http://pan.baidu.com/s/1hsj8ZWw 密码:4a7s 下面是没有 ...
- db2 v9.7 新特性cur_commit 能够实现未提交读新特性cur_commit 能够实现未提交读
db2 get db cfg|find "CUR_COMMIT" 当前已落实 (CUR_COMMIT) = ON ...
- html笔记篇-Sublime、Markdown
1.sublime优点:跨平台(Linux,Windows和Mac OS X). 体积小运行速度快. 支持编译功能 .支持大量的插件 2.sublime快速生成html文档: !+tab键 ...
- 非节点主机通过内网远程管理docker swarm集群
这是今天使用 docker swarm 遇到的一个问题,终于在睡觉前解决了,在这篇随笔中记录一下. 在 docker swarm 集群的 manager 节点上用 docker cli 命令可以正常管 ...
- MySQL 聚合函数以及 优先级
1 from 2 where 3 group by 4 having 5select 6distinct 7 order by 8 limit sum 求和 avg ...
- 洛谷试炼场-简单数学问题-P1088 火星人
洛谷试炼场-简单数学问题 A--P1088 火星人 Description 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...
- [No0000154]详解为什么32位系统只能用4G内存.
既然是详解, 就从最基础的讲起了. 或者1来存储数据的, 所以Bit实际上可以看成存放1个二进制数字的1个位置.也就是说bit只有2种值, 0 或者 1, 所以1个bit能存放1个布尔类型的值(boo ...
- 图解Fiddler如何抓取Android数据包
介绍Fiddler抓取Android数据包希望对大家的工作和学习有所帮助! 电脑开启wifi热点 首先在电脑上下载一个wifi软件,我这里用的是猎豹wifi,电脑开启wifi热点后,如下图所示: 设 ...