参数部分没有

不要照抄,只供参考

需求:

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 持续集成的更多相关文章

  1. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  2. 使用jenkins构建持续集成平台

    jenkins +   Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...

  3. 用MSBuild和Jenkins搭建持续集成环境(2)

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  4. jenkins jmeter持续集成批处理jmx脚本

    这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...

  5. RF+Jenkins构建持续集成

    引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...

  6. Jenkins+Git 持续集成

    持续集成是必要的! 希望达到的效果是:开发同事签入代码后,对应的站点可以自动实现更新.目前还只在在内部服务器上实现开发环境中的站点更新,不涉及到线上的发布. 目前使用Jenkins实现这样的持续集成. ...

  7. 使用Jenkins进行持续集成ionic3项目

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.  网上大多数是关于.net web网站以及 ...

  8. 使用jenkins实现持续集成

    一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预: 它需要有专门的集成服务器来执行集成构建: 它需要有代 ...

  9. jenkins+github持续集成中的坑

    1.前言 刚开始开发自己的独立博客的时候,每次发布都要手动打包,上传服务器,杀tomcat进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...

随机推荐

  1. d3.js 根据需求定制pie图饼图

    参考网址: http://d3pie.org/#generator 用法: 1.在网址中,跟着步骤,设置样式和效果,最后获取pie的option格式 2.引入d3.min.js和d3pie.min.j ...

  2. class in Bad version

    异常信息:class in Bad version:jdk版本不对

  3. 矩阵游戏|ZJOI2007|BZOJ1059|codevs1433|luoguP1129|二分图匹配|匈牙利算法|Elena

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩 ...

  4. 在ubuntu系统中,python依赖存放的路径

    你在使用python,之后你想给python安装一些第三方库,如tensorflow或者tensorrt,那么这些包存放在哪个路径下呢? 该目录下: /usr/local/lib/python3.5/ ...

  5. transformations 变换集合关系 仿射变换

    http://groups.csail.mit.edu/graphics/classes/6.837/F03/lectures/04_transformations.ppt https://group ...

  6. Hystrix在项目中实践

    Hystrix在项目中实践 https://mp.weixin.qq.com/s/4Fg0COnWRB3rRWfxbJt7gA

  7. [administrative][archlinux][clonezilla][disk cloning] 一块 windows 10 硬盘的备份

    https://wiki.archlinux.org/index.php/disk_cloning https://wiki.archlinux.org/index.php/full_system_b ...

  8. OpenGL教程和书籍

    1.http://goanna.cs.rmit.edu.au/~gl/teaching/Interactive3D/

  9. vue安装调试器Vue.js devtools

    一. 打开https://github.com/vuejs/vue-devtools,进入gitlab.往下翻找到: 找到installation,选择以chrome的拓展方式安装. 二. 这边选择添 ...

  10. 20165213&20165225结对学习感想及创意照

    20165213&20165225结对学习感想及创意照 会JAVA的大学生活好小组 团队感悟: 1+1>2还是1+1<2? 上述两个观点实际没有对错之分,取决点在于个人见解. 相信 ...