【问题标题】:gitlab, post-receive, deploygitlab,后接收,部署
【发布时间】:2016-12-21 02:34:47
【问题描述】:

应该很简单,但也许我不明白这里的大局。 我已经设置了一个在 Ubuntu 16.04/Apache 上运行良好的 GitLab (omnibus)。在同一台机器(同一个 Apache)上,我有应该通过 GitLab 更新的 www。

由于我在同一台机器上,使用 webhook 或其他复杂的机制是没有用的。我只想将“提交到 master”复制到 www 文件夹,所以我选择 custom_hooks,如此处所述 http://docs.gitlab.com/ce/administration/custom_hooks.html

我在接收后创建了一个文件,授予了 git 权限(以及文件夹)并且触发器正在工作

#!/bin/bash
mkdir testdir

目录是在提交时创建的。

可能是一个愚蠢的问题,但是要复制 GIT 存储库文件到哪里?

我看到很多在客户端创建钩子的教程,我应该在 www 文件夹中创建另一个 GIT 客户端并使用它的钩子吗?

这不能在gitlab主文件夹中的git服务器端完成吗?

提前感谢您的指导,

【问题讨论】:

  • 您可以将 repo 克隆到钩子内的临时文件夹,复制文件,然后删除克隆的文件夹。

标签: git gitlab


【解决方案1】:

好吧,我想通了。如果有人需要,首先我在这里找到了一个很好的教程: https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks

我完全错过的是,GitLab 的安装并没有安装 git 本身 :) 只是创建了一个用户+组“git”。所以所有带有git结构的GitLab项目文件夹都在:

/var/opt/gitlab/git-data/repositories/<GROUP>/<PROJECT>

只是(git)文件夹,由我尝试过的客户端推送,并成功从我网络中的另一台机器(从 windows)推送

现在问题继续,当然是在 GitLab 所在的服务器机器上安装 git:

sudo apt-get install git

然后,测试您是否可以签出一些分支并复制到 /www/ 文件夹 (文件夹必须具有用户权限,以便将来使用,git)

git --work-tree=/var/www/html/<MY_WWW_DEPLOY_FOLDER> --git-dir=/var/opt/gitlab/git-data/repositories/<MY_GITLAB_PROJECT_REPO> checkout -f

成功。所有文件现在都出现在部署文件夹中。

此外,当有人推送 repo 时,问题继续触发自动部署,为此,您必须在 GitLab 项目文件夹中创建一个名为 custom_hooks 的文件夹

/var/opt/gitlab/git-data/repositories/<MY_GITLAB_PROJECT_REPO>/custom_hooks/

在里面,创建一个名为 post-receive 的新文件,并为 git 用户赋予 +x 权限 我还没有完成这部分,因为我还没有决定使用什么语言进行后期接收。似乎可以是任何类型,即使是 C 编译的可执行文件,只要具有 +x 权限并准备好接受一些(不良文档)GIT 回调参数。

干杯,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多