编程语言
首页 > 编程语言> > php – 如何设置Gitlab Web Hook进行部署

php – 如何设置Gitlab Web Hook进行部署

作者:互联网

我在该项目中创建了新项目和分支.我需要为我的开发服务器配置一个特定的分支.每当应该自动部署到服务器的分支中发生推送时.

我在Gitlab中尝试过使用Web Hook.但这不是锻炼.请给出参考.一步一步的链接.我需要在本地计算机和服务器系统中执行哪些配置.我已经搜索过我们需要设置一些“Post Receive WebHook in server”可以请给出这个想法.

“在这里我将解释我手中的内容.服务器已经设置了没有git.我在一个分支中有一个项目”开发“.我在我的本地克隆并推送到分支.它工作正常.(我正在使用窗口但是,当我推送一些更新后,我需要推送到服务器.所以,我已经尝试过使用Web Hook.但它无法正常工作.“

解决方法:

我也遇到过这个问题,初学者几乎没有任何文档.

以下是我使用gitlab进行此操作的步骤:

确保在你想要自动部署的服务器上有一个SSH密钥,对我来说这是一个Ubuntu服务器.我必须为www-data生成SSH密钥,以便用户可以连接到gitlab服务器.

我必须运行此命令为www-data用户生成一个ssh密钥:

sudo -u www-data ssh-keygen -t rsa

生成ssh密钥后,必须将其添加到gitlab中,以便项目部署密钥. (project-> settings-> deploy keys).

现在转到您希望项目推送到的文件夹(对我来说是/ var / www / website /)并执行以下操作:

git init
git clone origin-url .

最后的点使得它只拉动文件,并且不包括你的项目在gitlab上的文件夹.

然后…

chgrp -R www-data .git
chmod -R g+rwxs .git

这允许git文件夹执行php命令并将www-data组添加到该文件夹​​.

之后我必须制作一个脚本,在调用钩子时运行我想要的命令.

这是我正在使用的PHP,我将文件命名为webhook.php

<?php

if($payload = file_get_contents('php://input')) {
    try {
            $payload = json_decode($payload);
    } catch(Exception $ex) {
            echo $ex;
            exit(0);
    }
    // put the branch you want here
    if($payload->ref != "refs/heads/master") {
            echo "wrong head";
            exit(0);
    }
    //put the branch you want here, as well as the directory your site is in
    $result = `cd /var/www/website && git fetch origin && git merge origin/master`;

    echo $result;
} else {
    echo "failed request";
} 
?>

webhook.php也需要来自www-data的执行权限.

完成所有操作后,您需要在项目中制作webhook(project-> settings-> webhooks)

将url添加到webhook.php

我将webhook.php放在服务器上的子域中,这样我就可以使用它来推送具有相同文件的不同站点.

http://deploy.website.com/webhook.php

我还添加了使用http://requestb.in,以便我可以确保发送到服务器的数据.

不确定我是否忘了什么,但我认为这就是我所做的一切

标签:php,git,github,webhooks,gitlab
来源: https://codeday.me/bug/20190722/1507312.html