设为首页 收藏本站
查看: 1149|回复: 0

[经验分享] Jenkins08,Jenkins纳入版本控制

[复制链接]

尚未签到

发表于 2018-1-8 19:02:44 | 显示全部楼层 |阅读模式
#!/bin/bash  

  
#Jenkins的Subversion备份脚本
  
#请将本脚本放到JENKINS_HOME目录
  
#作者:zjl
  
#version:2.0
  
#time:2014-01-07 18:36
  
#
  

  

  

  
#获取当前系统时间
  
DATE=`date "+%Y%m%d"`
  

  
SVN_HOME=/home/froad/svn
  

  
JENKINS_HOME=/home/froad/jenkins
  

  
#日志文件
  
LOG_HOME=/root/.subversion/logs
  

  
LOG_FILE=${LOG_HOME}/svn_commit_${DATE}.log
  

  
TMP_STATUS_LOG=${LOG_HOME}/status.log
  

  

  
echo "[begin] 当前时间:`date "+%Y%m%d_%H%M%S"`" >>${LOG_FILE}
  

  
if [ ! -d "${LOG_HOME}" ];then
  

  mkdir -p ${LOG_HOME}
  
fi
  

  
#进入到svn工作目录,防止出现稀奇古怪的错误
  
cd ${JENKINS_HOME}
  

  
function svn_add()
  
{
  

  #使用svn add命令将文件添加到版本控制
  ${SVN_HOME}/bin/svn add  ${JENKINS_HOME}/*  --username=jenkins  --force &>>${LOG_FILE}
  #退出码
  EXIT_NUM=$?
  

  echo "svn add退出码:${EXIT_NUM} !" >>${LOG_FILE}
  
}
  

  

  

  
function svn_status()
  
{
  

  #使用svn status命令判断文件是否删除、修改或者其他操作
  ${SVN_HOME}/bin/svn status  "/${JENKINS_HOME}" > ${TMP_STATUS_LOG}
  

  #循环从文件中读取一行
  cat ${TMP_STATUS_LOG} | while read line;do
  

  #获取第一个字符,根据第一个字符判断情况
  l=`echo ${line}|cut -c1`
  

  #状态为A(增加)时,不需要任何操作,直接返回。
  if [ "${l}" == "A"  ];then
  continue
  fi
  

  #状态为D(删除)时,不需要任何操作,直接返回。
  if [ "${l}" == "D"  ];then
  continue
  fi
  

  #状态为M(修改)时,不需要任何操作,直接返回。
  if [ "${l}" == "M"  ];then
  continue
  fi
  

  #状态为?(未受控制)时,调用add命令然后返回。ps:不知道怎么的有时候从文件中读取回来的?变成了0
  if [ "${l}" == "0" ] || [ "${l}" == "?"  ];then
  ${SVN_HOME}/bin/svn add  "${JENKINS_HOME}/`echo ${line} | cut -d ' ' -f 2- `" >>${LOG_FILE}
  continue
  fi
  

  #状态为!(丢失或者不完整)时,调用delete命令然后返回。
  if [ "${l}" == "!"  ];then
  

  ${SVN_HOME}/bin/svn delete "${JENKINS_HOME}/`echo ${line} | cut -d ' ' -f 2- `" >>${LOG_FILE}
  continue
  fi
  

  echo "[info]其他情况:"${line} >>${LOG_FILE}
  done
  #删除临时文件
  rm -rf ${TMP_STATUS_LOG}
  

  
}
  

  

  
function svn_commit()
  
{
  

  #使用svn commit命令提交到服务器
  ${SVN_HOME}/bin/svn commit ${JENKINS_HOME}/*  --message="crontab commit" --username=jenkins &>>${LOG_FILE}
  

  EXIT_NUM=$?
  

  if [ ! ${EXIT_NUM} == "0" ];then
  

  echo "[error]退出码:${EXIT_NUM} svn commit失败,请查看日志!">>${LOG_FILE}
  return
  

  fi
  echo "svn commit退出码:${EXIT_NUM} !">>${LOG_FILE}
  
}
  

  
#调用方法
  
svn_add
  
svn_status
  
svn_commit
  

  
echo "[end] 当前时间:`date "+%Y%m%d_%H%M%S"`" >>${LOG_FILE}
  

  
#输出空行隔离
  
echo  >>${LOG_FILE}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433012-1-1.html 上篇帖子: Jenkins+Maven+SVN 下篇帖子: Jenkins~简单部署及使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表