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进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...
随机推荐
- Mac下git通过SSH进行免密码安全连接github
Git——The stupid content tracker(傻瓜内容跟踪器) Git是Linux的缔造者Linus Torvalds为了帮助管理Linux内核源码而开发的一款免费.开源的分布式版本 ...
- Spring学习笔记--Spring IOC
沿着我们上一篇的学习笔记,我们继续通过代码学习IOC这一设计思想. 6.Hello类 第一步:首先创建一个类Hello package cn.sxt.bean; public class Hello ...
- day_6.22python多线程
僵尸进程:子进程结束,父类未结束 孤儿进程:父类进程over.,子进程未结束 0号进程负责运行,1号进程负责生成,所有孤儿进程的收容所(孤儿进程:父类进程over)1号进程,永不结束! Linux: ...
- c++中map按key和value排序
``` #include<iostream> #include<algorithm> #include<vector> #include<map> #i ...
- NPOI 自定义单元格背景颜色 XSSFWorkbook - Excel
x 网上找到了,HSSFWorkbook自定义颜色的例子(讲的还挺细致的),但是XSSFWorkbook确没找到...研究了一下,坑掉了一地... NPOI.XSSF.UserModel.XSSFWo ...
- 20165311学习基础和C语言基础调查
一.技能学习经验 有什么技能比90%的人更好? 这个问题问的就很emmmm..我觉得自己的推理和逻辑思维能力比较出众,面对新事物的自学速度比较快. 针对技能谈一下成功的经验. 每一项出众的技能都是与平 ...
- Java8 CompletableFuture
http://colobu.com/2016/02/29/Java-CompletableFuture/ http://www.deadcoderising.com/java8-writing-asy ...
- 【python基础】迭代器和生成器函数
1.迭代器协议: 1.迭代器协议是指:对象必须提供一个 __next__() 方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走不能往前退) ...
- 01.jupyter环境安装
jupyter notebook环境安装 一.什么是Jupyter Notebook? 1. 简介 Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文 ...
- oracle常见的执行计划
访问表的执行计划: 全表扫描:TABLE ACCESS FULL ROWID扫描:TABLE ACCESS BY USER ROWID (ROWID来源于用户在where条件中的指定)或 TABLE ...