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进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...
随机推荐
- react-native 搭建环境
1.安装 nodejs 配置环境变量 node -v npm -v 2.安装 javaSE 1.8以上 http://www.oracle.com/technetwork/java/javase/ar ...
- ubuntu下安装Python3
到www.python.org网站下载python3.3.2 Gzipped source tar ball (3.3.2) (sig), ~ 16 MB 解压tar vxzf Python3.3.2 ...
- 170828、Eclipse Java注释模板设置详解以及版权声明
编辑注释模板的方法:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素 ...
- Linux下部署多个Tomcat(完整)
Linux下部署多个Tomcat 1.环境:1.1.Centos 5.01.2.apache-tomcat-6.0.18 2.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2. ...
- Runstats,Reorgchk,Reorg,Rebind
Runstats:收集统计信息,为DB2优化器提供最佳路径选择.runstats命令只能针对单表执行.命令格式:db2 runstats on table schema.tabnamerunstats ...
- Django中,ajax检测注册用户信息是否可用?
ajax检测注册用户信息主体思路 1.在settings.py中配置需要使用的信息 #对static文件进行配置 STATICFILES_DIRS=[ os.path.join(BASE_DIR,'s ...
- [No0000167]CPU内部组成结构及指令执行过程
计算机的基本硬件系统由运算器.控制器.存储器和输入.输出设备五大部件组成.运算器和控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU). CPU的功能 ...
- Xcode编辑器之基本使用(一)
前言. 苹果原生xcode使用介绍文档 1.Xcode IDE概览 说明: 从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码 ...
- ODOO权限管理,在两个方面设置权限
转载参考https://zhuanlan.zhihu.com/p/29130388 在odoo中新建两个用户user1,user2 新建用户 建完了用户,记得编辑用户,设置密码. 然后以user1用户 ...
- ORACLE DB体系结构
. 实例:一组oracle后台进程.线程以及一个共享内存区. 连接:用户进程和实例之间的通信 会话:用户通过用户进程与实例建立的特定连接 参数文件:包含控制文件的位置和名称 分为pfile和spfil ...