gitlab集成redmine后,代码push的pre-receive脚本
来源:互联网 发布:守望先锋 网络延迟严重 编辑:程序博客网 时间:2024/06/10 12:07
过去参考网上资料,做过svn的脚本。这次参考svn的脚本改写来的。另外还参考了网上其他资料。
由于ruby不熟悉,费了不少劲儿。脚本是以gitlab提供的默认脚本为基础改写的. 其中不好的地方
就是直接查询mysql数据库的地方,也没精力进一步优化了,凑合着用吧。
#!/usr/bin/env /opt/gitlab-8.5.7-0/ruby/bin/ruby# This file was placed here by GitLab. It makes sure that your pushed commits# will be processed properly.refs = ARGF.readkey_id = ENV['GL_ID']repo_path = Dir.pwd# added based on gitlab sampleparaArray = refs.split(' ')$i=0while $i < paraArray.size do oldrev = paraArray[$i] newrev = paraArray[$i+1] refnam = paraArray[$i+2] $i += 3 # get the commit log message revStr = `git rev-list #{oldrev}..#{newrev}` revArray = revStr.split("\n") revArray.each do |rev| log=`git show -s --format="%s" #{rev}`# from pre-commit.rb of svn comments = log if /[a-zA-Z0-9]/ !~ comments print "You must include a comment with your commit." ENV['GL_ID'] = nil exit 1 end if /refs|fixes|closes\s#([0-9]+)/ !~ comments print "You must reference a Redmine issue in your commit comments (e.g. 'refs #1234')." ENV['GL_ID'] = nil exit 1 end issue_number = comments[/#([0-9]+)/][/([0-9]+)/] # Change the username, password, hostname, and dbname in the following line # to match your settings command_line_output = `mysql -N -u root -proot123 \ -h 127.0.0.1 bitnami_redmine -e \ "SELECT COUNT(*) FROM issues I INNER JOIN issue_statuses S \ ON S.id = I.status_id WHERE S.is_closed = 0 AND I.id = #{issue_number};" 2>/dev/null` redmine_issue_open = command_line_output[0,1] if '0' == redmine_issue_open print "Issue ##{issue_number} is not in an open state." ENV['GL_ID'] = nil exit 1 end endendrequire_relative '../lib/gitlab_custom_hook'require_relative '../lib/gitlab_access'if GitlabAccess.new(repo_path, key_id, refs).exec && GitlabCustomHook.new.pre_receive(refs, repo_path) exit 0else # reset GL_ID env since we stop git push here ENV['GL_ID'] = nil exit 1end
0 0
- gitlab集成redmine后,代码push的pre-receive脚本
- Redmine与Gitlab深度集成
- Gitlab利用Webhook实现Push代码后的jenkins自动构建
- Redmine集成本地Git代码库404问题的解决
- 基于jenkins+gitlab+redmine构建持续集成环境(一)
- Ubuntu 14.10集成redmine和gitlab(bitnami stacks)
- gitlab配置ssh key以及代码push
- Testlink与Redmine的集成
- gitlab + jenkins + sonar java代码持续集成
- GitLab push代码时报:the remote end hung up unexpectedly
- 将本地代码push到GitLab空仓库
- gitlab push代码通过webhooks自动触发jenkins构建设置
- git已经push代码到gitlab如何回退
- jenkins 集成 redmine 账户验证的方案
- redmine和testlink的迁移和集成
- 服务器钩子,绝对是服务器的,update钩子和pre-receive钩子
- 解决CSDN博客插入代码出现<pre></pre>的问题
- GitLab push 找不到gitlab_update
- BZOJ 4012: [HNOI2015]开店
- SSL 1606 选课 树转二叉树+树形dp
- 8种CSS清除浮动的方法优缺点分析
- bzoj 4448: [Scoi2015]情报传递
- leetcode——15——3Sum
- gitlab集成redmine后,代码push的pre-receive脚本
- Struts2+jquary ajax方式返回json并解析
- python的基本输入输出
- Windows 下的免费 SSH 客户端工具
- Linux - 常用命令
- poj1852Ants
- srand((unsigned)(time(NULL)))的用法
- java开发之反射
- 常用SVN命令行