前言
本篇博文继gitbilt的初始化后,主要记录有关gitblit仓库钩子的使用
钩子(hook)
什么是钩子呢,这里不具体介绍钩子是干嘛的了,不知道的同学去查一下git hook是啥吧,gitblit的钩子和git自身的hook还不太一样,是平台自己集成的一种钩子,用了groovy脚本,groovy脚本的语法也自己学习一下吧
钩子创建
首先我们创建钩子文件,钩子文件在哪呢,就在我们gitblit根目录下data->groovy目录下,我们可以在目录下根据功能来创建文件
钩子的功能
钩子主要分了两大块功能
- pre-receive
Pre-receive hooks会在推送接收后,refs 更新之前执行,如果想要拒绝推送,就设置这种hook就可以
- post-receive
Post-receive hooks 会在推送接收后, refs 更新之后执行。如果想在推送结束后,执行某些事情,比如发邮件或者自动化执行某件事情,可以设置这种hook
钩子的设置
首先我们在groovy下建立两个脚本:
pre_test_hook.groovy
post_test_hook.groovy
我们进入到gitblit的管理页面
找到需要设置的仓库点进去
选择右侧的编辑
在编辑页面选择左侧tap栏的receive
可以看到pre和post两类脚本的设置,双击目标脚本,保存即可
功能展示
- 周四-周日期间禁止推送代码
- 推送代码成功后,管理员收到邮件
我们准备两个小功能用作演示
推送禁止功能
首先我们将刚新建的pre_test_hook.groovy脚本,指定给我们当前使用的仓库
import org.eclipse.jgit.transport.ReceiveCommand
import org.eclipse.jgit.transport.ReceiveCommand.Result
import static java.util.Calendar.DAY_OF_WEEK
def date = new Date()
def week = date[DAY_OF_WEEK]
for (ReceiveCommand command : commands) {
if (week==5 || week==6) {
command.setResult(Result.REJECTED_OTHER_REASON, "周四周五禁止上传代码!!")
}
}
附上代码,上述代码,主要功能是判断当前日期是否在周四-周五期间,如果是,则禁止推送代码
今天周四,我们推送一下代码,推送失败,可以在打印台看到我们的日志
推送后触发功能
首先我们将刚新建的post_test_hook.groovy脚本,指定给我们当前使用的仓库
import com.gitblit.utils.JGitUtils
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.transport.ReceiveCommand
String triggerUrl = "http://内网地址/job/jenkins任务名/buildWithParameters?任务参数"
try {
def url = new URL(triggerUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Cookie", "jenkins-timestamper-offset=-28800000000000000000; screenResolution=1920x1080; JSESSIONID.b0b6f386=node01sfcleub6om466nw6tvlzkh2v246.node0");
connection.getContent();
} catch (Exception ex) {
logger.info("Catching the exception")
}
附上代码,上述代码,主要功能是在推送成功后,执行以下jenkins的任务
推送
- Github
https://github.com/KingSun5
结语
若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
QQ交流群:806091680(Chinar)
该群为CSDN博主Chinar所创,推荐一下!我也在群里!
本文属于原创文章,转载请著名作者出处并置顶!!