gitLab 全局hooks和custom_hooks,以及怎样实现自动pull

写代码的时候,git push到远程代码库后,往往还要连到服务器上pull代码才能进行测试。代码push后自动更新测试服务器的代码也算是一种刚需了。

gitLab的钩子分为两大类:1.web hooks

            2.custom hooks,这是调用git原生钩子,这里的钩子也有两种类型:(1)全局钩子 (2)每个项目对应的钩子。

这几天踩了很多坑,才用一种迂回的方法解决了问题。介绍一下GitLab和ubuntu的版本:

(1)Ubuntu 16.04.1 LTS + GitLab Community Edition 9.4.4

(2)Ubuntu 16.04.1 LTS + GitLab Community Edition 8.15.4

两个版本的gitlab配置起来是几乎是一样的。

1.web hooks

参考:https://docs.gitlab.com/ee/user/project/integrations/webhooks.html

这里就不重点介绍了,主要介绍让我踩了很多坑的custom hooks

2. custom hooks

参考:https://docs.gitlab.com/ee/administration/custom_hooks.html#custom-git-hooks

这里的官网文档有句:Normally, Git hooks are placed in the repository or project‘s hooks directory. GitLab creates a symlink from each project‘s hooks directory to the gitlab-shell hooks directory for ease of maintenance between gitlab-shell upgrades.

这里的symlink是软链接,类似windows的快捷方式,但是还是有区别:以gitlab中的hooks目录为例:

在dir1/hooks/A,在dir2/hooks/A,这里两个hooks是软链接的关系,其实是同一个。路径dir1和dir2不同,但是对这两个目录下的hooks目录的文件修改,添加,删除,都同时起作用,因为这个目录本来就是一个。好了,我们看gitlab中是怎样做的:

git本身具备hook机制,可以接收代码前或者更新代码后调用自定义的脚本。这个脚本在{{代码仓库}}/.git/hooks目录下。如下图:/home/htdocs/lost为git代码仓库,lost下面.git/hooks目录为git的回调脚本。常用的有pre-commit改脚本在提交前执行,可以做一些提交的验证工作。还有一个post-receive,该脚本在代码提交后执行,自动更新远程服务器的代码就用到这个脚本。

时间: 2024-11-09 06:14:25

gitLab 全局hooks和custom_hooks,以及怎样实现自动pull的相关文章

自动化发布-GitLab WEB Hooks 配置

钩子(hooks)Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件.触发器之类的东西类似).Git Hooks就是那些在Git执行特定事件(如commit.push.receive等)后触发运行的脚本.gitlab的web hooks跟git hook类似.也是当项目发生提交代码.提交tag等动作会自动去调用url,这个url可以是更新代码.或者其他操作. 配置目的: 由于系统属于后台接口系统,开发提交完git仓库后要实时的部署到测试环境,这时候就需要用到gitl

jenkins 设置 gitlab web hooks

背景 接口自动化期望代码push后触发实现持续集成,代码push后,自动化执行jenkins的job. 步骤 准备工作 工具:jenkins,gitlab jenkins需要安装插件:git plugin,gitlab hook plugin , gitlab plugin(有的插件是自带的,缺什么安装什么) gitlab:确保有web hook权限,这个跟公司的gitlab有关,入口settings下的web hooks如下: 确保gitlab跟jenkins的连通性 hook的大概原理其实很

使用GitLab进行落地项目的管理,并且自动更新、重启、回滚

Gitlab 清空项目历史commit,节省空间 http://blog.csdn.net/dounine/article/details/77840416?locationNum=6&fps=1 使用Git Submodule管理子模块 https://segmentfault.com/a/1190000003076028 安装配置GitLab http://www.cnblogs.com/littlehb/p/7052583.html 利用git钩子,使用python语言获取提交的文件列表

svn服务端hooks钩子可用于多项目自动同步

废话不多说,直接上post-commit脚本了: 日志会全部记录下来包括同步的文件 vim post-commit #!/bin/sh REPOS="$1" # 仓库的路径 REV="$2" # 新提交的版本号 export LC_ALL="zh_CN.UTF-8" expor LANG="en_US.UTF-8" LOGFILE=/var/log/svn-hooks.log # 钩子脚本的日志 # 脚本的标准输出和标准错误输

gitlab hooks

之前一直用文件同步工具进行两台服务器之间的同步 最初的目的是吧gitlab的代码库同步到开发环境中运行 实时的 ,后来由于gitlab的代码仓库的代码不是实时的 于是在即使同步不适合 我的需求. 后来查看到了gitlab的 hooks 可以根据 push 等事件进行调用链接 于是在gitlab中添加了一个服务器端的链接 服务器端的php <?php // shell pull 最新的服务器上的文件到当前目录 $shell=system("/bin/bash pull.sh",$t

jenkins+gitlab构建安卓自动编译环境

因工作关系接触到接触到安卓自动编译环境,网上的资料都推荐了jenkins,因为第一次接触安卓和jenkins,踩了不少的坑,有总结才有进步. gitlab环境之前已经安装完成可用,具体步骤另外详解吧.本例目标是在gitlab可用前提下,通过jenkins将git仓库的代码自行编译打包,生成可用的apk安装文件. 一.相关环境 1 Linux Centos6.3 2.6.32-279.el6.x86_64 各相关软件版本 1     JDK 1.8.0    Gradle 2.13    SDK 

CentOS 自定义安装GitLab

准备工作和说明 说明: 本文主要参考官方文档而来 gitlab 安装路径为/data/git 基于CentOS minimal 系统,系统安装时没有安装依赖包,可以安装开发包,也可依报错信息安装缺少依赖. 主要涉及以下组件安装与配置 依赖包 Ruby Go System Users Database Redis GitLab Nginx 1. 依赖包安装 更新系统及软件包 #以 root 用户运行 yum update -y yum upgrade -y 安装 vim wget yum inst

jenkins+gitlab+maven+tomcat持续集成环境安装配置

jenkins+gitlab+maven+tomcat,该环境主要实现自动构建部署java web应用. 其工作流程是:提交代码到gitlab--jenkins触发构建任务--maven编译打包--jenkins将war包部署到tomcat. 安装JDK #安装jdk1.8 tar zxvf jdk-8u77-linux-x64.gz #设置环境变量 #vi /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_77 export JAVA_BIN=

搭建 Linux 下 GitLab 服务器【转】

转自:http://blog.csdn.net/passion_wu128/article/details/8216086 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 平台需求 硬件需求 本安装指南已于 DebianUbuntu 测试通过 重要信息 1 安装依赖包 数据库 SQLite MySQL PostgreSQL 2 安装 Ruby 3 安装 Gitolite 检查退出并重新登录以使 git 用户组生效 4 克隆 GitLab 源代码并安装先决条件 选择你希望使