gitlab 使用原始的hooks同步到某一个目录

简介:
1
2
更新
发现一个很严重的问题,就是原始的gitlab-shell的hooks的东西绝对不能修改,还得必须是原来的东西。

post-receive还得是这个,如果改成git --work-tree=$web_dir checkout -f,去git拉取代码好像都不是最新的,慎重


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env ruby
 
# This file was placed here by GitLab. It makes sure that your pushed commits
# will be processed properly.
 
refs = ARGF. read
key_id  = ENV[ 'GL_ID' ]
repo_path = Dir. pwd
 
# reset GL_ID env since we already got its value
ENV[ 'GL_ID' ] = nil
 
require_relative  '../lib/gitlab_custom_hook'
require_relative  '../lib/gitlab_post_receive'
 
if  GitlabPostReceive.new(repo_path, key_id, refs). exec  &&
     GitlabCustomHook.new.post_receive(refs, repo_path)
   exit  0
else
   exit  1
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
具体总结
su  - git
cd  /opt/git/repositories/xx/xx .git
rm  -rf hooks
cp  -r  /opt/git/gitlab-shell/hooks  ./
cd  hooks
rm  -rf pre-receive update
ln  -s  /opt/git/gitlab-shell/hooks/pre-receive   pre-receive
ln  -s  /opt/git/gitlab-shell/hooks/update  update
vim  post-receive
#!/bin/bash
web_dir= /opt/xx/xx/
git --work-tree=$web_dir checkout -f
 
git checkout不够好,更进一步看下面的链接

利用git push向服务器一键部署代码 //

gitlab hook 加了expect


有时候,不需要定时同步。

参考上面的链接

#!/bin/sh

cur_dir=$(pwd)

web_dir=/opt/webroot/gitlab_hook/

#echo $cur_dir"/hooks" > /tmp/gitlab_hook_cur_dir.txt

#echo `whoami` > /tmp/gitlab_hook.txt

GIT_WORK_TREE=$web_dir git checkout -f

$cur_dir"/hooks/web_rsync" $web_dir   > /tmp/gitlab_hook_rsync.log


web_rsync

#!/bin/bash

#ROOT="/data/www/wwwroot/bbs.linuxtone.org/"

SITE="xx"

USER="root"

PASSWORD="xx"

RSYNC_OPTS="-e \\\"ssh -p22 -o StrictHostKeyChecking=no\\\" -azuv --progress --exclude ".git" --bwlimit=150 --timeout=1200 -l"


auto_rsync() {

   expect -c "eval spawn -noecho rsync $RSYNC_OPTS $1 $2

      expect \"*?assword:*\"

      send -- \"$PASSWORD\r\"

      expect eof"

}


sync() {

   FILE=$(basename $1)

   DEST=$(dirname $1)

   SRC=$1

   # download remote site file to current location

   #auto_rsync $USER@$SITE:$ROOT$FILE $DEST

   auto_rsync   $SRC  $USER@$SITE:$DEST 

   # update remote site file if newer than backup

   #auto_rsync $1 $USER@$SITE:$ROOT

}


# Remote file Directory

sync "/home/post-receive"



本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1775314,如需转载请自行联系原作者

相关文章
|
6月前
|
Java Serverless 项目管理
云效常见问题之自建gitlab代码同步到codeup报通过token访问失败如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
151 1
|
6月前
|
运维 Devops Shell
云效产品使用报错问题之在codeup上创建的代码分支或者代码变动,同步到gitlab失败如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
开发工具 git
如何将项目从Github、Gitlab同步到Gitee
有时候,我们项目使用Git工具上传到GitHub,并且完善好说明等之后,我们往往像同时推送到Gitee,毕竟有时候Gitee还挺有用,至少下载速度不错。
651 0
|
网络安全 开发工具 git
使用GitLab Mirrors同步Git仓库
笔者需实现多个Git仓库数据的同步,大致是从一个远程的Git仓库同步代码到公司内部的GitLab仓库。经过调研,笔者将目光瞄准开源的GitLab Mirrors。
10804 2
|
网络安全 开发工具 数据安全/隐私保护
[原创]gitlab项目自动同步到github或者码云gitee
[原创]gitlab项目自动同步到github或者码云gitee
[原创]gitlab项目自动同步到github或者码云gitee
|
开发工具 Android开发 git
Gerrit & GitLab&Hooks
用GitLab吧直接(不需要Gerrit配合),界面非常美观,使用方法也很简单,而且也能满足之前的代码审核的要求。所以大家也都转去GitLab吧。
269 0
|
数据安全/隐私保护 网络安全 开发工具
gitlab项目自动同步到github或者码云gitee
初始条件,先自行建好gitlab的代码仓库和码云的代码仓库,ssh配好。 打开gitlab项目,在左侧菜单栏选择Settings->Repository gitlab项目 选择Push to a remote repository,打开之后可以看到相关的配置信息。
7443 0
|
jenkins 持续交付 Python
jenkins 设置 gitlab web hooks
背景 接口自动化期望代码push后触发实现持续集成,代码push后,自动化执行jenkins的job。   步骤 准备工作 工具:jenkins,gitlab jenkins需要安装插件:git plugin,gitlab hook plugin , gitlab plugin(有的插件...
1663 0

相关实验场景

更多