当前位置: 首页 > 知识库问答 >
问题:

我如何添加钩子到GitLab?

乐城
2023-03-14

我在CentOs上的/opt/gitlab-6.9.2-0/apps/Gitlab/上设置了一个新的Gitlab,并在continuous-delivery组下创建了一个新的存储库。完整路径为/opt/gitlab-6.9.2-0/apps/gitlab/gitlab-satellites/continuous-delivery/cd-test。此路径下只有一个文件,即readme.txt。

我试图实现的是当有人将更改推送到服务器时创建一个新文件。下面是我在服务器上做的事情:

  1. 下创建更新后更新文件。git/hooks/'每个文件都使用echo“text”>>file_name`
  2. 创建一个新文件
  3. chmod它们为775。

当我将更改从本地推送到服务器时,不会创建任何文件。所以,我想知道我必须做什么来修复这个问题。

更新1

按照VonC的建议,我将后接收后更新添加到存储库路径

[root@git-cd hooks]# pwd
/opt/gitlab-6.9.2-0/apps/gitlab/repositories/continuous-delivery/cd-test.git/hooks
[root@git-cd hooks]# ll
total 48
-rwxrwxr-x. 1 git git  452 Jun 10 06:01 applypatch-msg.sample
-rwxrwxr-x. 1 git git  896 Jun 10 06:01 commit-msg.sample
-rwxrwxr-x. 1 git git   44 Jun 11 00:37 post-receive
-rwxrwxr-x. 1 git git   41 Jun 11 00:38 post-update
-rwxrwxr-x. 1 git git  189 Jun 10 06:01 post-update.sample
-rwxrwxr-x. 1 git git  398 Jun 10 06:01 pre-applypatch.sample
-rwxrwxr-x. 1 git git 1642 Jun 10 06:01 pre-commit.sample
-rwxrwxr-x. 1 git git 1281 Jun 10 06:01 prepare-commit-msg.sample
-rwxrwxr-x. 1 git git 1352 Jun 10 06:01 pre-push.sample
-rwxrwxr-x. 1 git git 4972 Jun 10 06:01 pre-rebase.sample
lrwxrwxrwx. 1 git git   57 Jun 10 06:01 update -> /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-shell/hooks/update
-rwxrwxr-x. 1 git git 3611 Jun 10 06:01 update.sample

这两个文件都包含一个向现有文件“poster receive-2”>>/var/log/hooks_test.log添加新行的脚本。然后将更改从本地计算机推送到服务器。但它仍然没有追加文本。

更新2

post-receive中的脚本错误,它没有回音。在我添加echo(echo“poster receive-2”>>/var/log/hooks_test.log之后,它就会像预期的那样工作!

共有1个答案

吕子真
2023-03-14

这将是因为那些卫星回购不是一个你会推动,所以他们的钩子不会触发时,你会想到(即,不是当有人推动到GitLab服务器)。

PR6185介绍了结构概述文档

/home/git/gitlab-satellites-从web UI签出用于合并请求和文件编辑的存储库。可以将其视为临时文件目录。

必须在GitLab服务器的文件系统上配置自定义git挂钩。
只有GitLab服务器管理员才能完成这些任务。如果您没有文件系统访问权限,请探索webhooks作为一个选项。

  • 在GitLab服务器上,导航到项目的存储库目录。
    对于手动安装,路径通常为/home/git/repositories/ / .git
    对于Omnibus安装,路径通常为/var/opt/GitLab/git-data/repositories/ / .git
  • 在此位置创建一个名为custom_hooks的新目录。
  • 在新的custom_hooks目录中,创建一个名称与挂钩类型匹配的文件。
    对于预接收挂钩,文件名应为预接收,不带扩展名。
  • 使钩子文件可执行,并确保它为Git所有。
 类似资料:
  • 添加插件钩子有两种方法 添加执行多次的插件钩子 hook($hook, &$params = null, $extra = null) 功能 添加执行多次的插件钩子 参数 $hook: string 钩子名称 $params: boolean 传入参数 $extra: boolean 额外参数 返回 string 插件执行结果 添加只执行一次的插件钩子 hook_one($hook, &$par

  • X1.4.0新增 hook($hook,$param) 功能: 添加钩子 参数: $hook:钩子名称 $param:传入参数,默认为空数组 返回: 无 模板使用: {:hook('footer')} {:hook('sider',array('text'=>'hello ThinkCMF')} 控制器方法里使用: //不带参数 hook('your_hook_name'); //带参数 h

  • 添加插件钩子有两种方法 添加执行多次的插件钩子 hook($hook, $params = null) 功能 添加执行多次的插件钩子 参数 $hook: string 钩子名称 $params: boolean 传入参数 返回 string 插件执行结果 添加只执行一次的插件钩子 hook_one($hook, $params = null) 功能 添加只执行一次的插件钩子 参数 $hook:

  • 问题内容: 因此,我有一个数据数组,并且正在使用该数据生成组件列表。我想在每个生成的元素上都有一个引用来计算高度。我知道如何使用Class组件执行此操作,但是我想使用React Hooks进行操作。 这是一个说明我要做什么的示例: 问题答案: 不确定我是否完全理解您的意图,但我认为您需要这样的东西:

  • 我试图在OSGi容器中添加一个BundleWatcher钩子,这样我就可以在包加载时监视它们。我在config.ini中做了以下更改, > 在osgi.bundles属性中添加了对我的jar的引用,如下所示,osgi.bundles=,reference\:file\:../lib/my.jar@2:start 设置属性osgi.framework.extensions=mybundle 在osg

  • 我正在使用LogbackSDK for Java向Sentry发送事件,如文档中所述。 片段: 最初的问题是发送到Sentry的事件没有按照我的自定义转换规则进行转换。使用包含转换规则的属性的所有其他附加程序(如Console)按预期解析数据。但是似乎与组合使用时,不知何故无法做到这一点。filter属性和dsn属性一样工作,所以我在Sentry中得到了错误,但在自定义解析中没有。 我用于(和传递