在推送时自动从GitHub部署到服务器

时间:2011-09-05 02:55:01

标签: git deployment github

我们在linode上有一个VPS,在gitHub上有代码。我们如何设置,当我们推送到gitHub时,它也会自动推送到我们的linode服务器。我们在linode服务器上使用PHP。

感谢。

6 个答案:

答案 0 :(得分:22)

您可能想要使用GitHub's post-receive hooks

总之,当有人推送回购时,GitHub将POST到提供的URL。只需编写一个简短的PHP脚本,在你的linode VPS上运行,并在收到所述POST时从GitHub中提取。

答案 1 :(得分:14)

我在python中写了一个小Github-Auto-Deploy服务器,它完全符合你的要求。

  • 在Github上输入您的域名post-receive service hook
  • 将本地存储库路径与配置文件
  • 中的存储库URL匹配
  • 服务器将从github接收请求并在本地存储库路径中运行git pull
  • 如果您提供一个
  • ,它还会在之后运行一个shell脚本进行部署

答案 2 :(得分:3)

我最终创建了自己的基本部署工具(很像Karl,但在PHP中)会自动从repo中删除新的更新 - https://github.com/jesalg/SlimJim - 基本上它会监听github post-receive-hook并使用用于触发更新脚本的代理。

答案 3 :(得分:2)

也许我已脱离上下文但我更喜欢手动选择从命令行推送的位置,例如:git push linode

要做到这一点,我在我的linode服务器中创建一个存储库容器,并创建一个post-receive钩子,将我的文件夹检出到最后一次推送的提交

创建一个git repo容器 mkdir /var/repo && cd /var/repo git --bare init

/var/repo/hooks/中创建收件后挂钩 touch post-receive nano post-receive chmod +x post-receive

收到后内容 #!/bin/sh git --work-tree=/var/www/ --git-dir=/var/repo checkout -f

在您的本地存储库 git remote add linode root@<linode ip|domain>:/var/repo git push linode

现在部署了您的代码

答案 4 :(得分:1)

您可以参考本教程:
Automatically Updating Your Website Using GitHub's Service Hooks

简而言之,它解释了以下步骤:

使用以下内容在服务器上的.git文件夹中创建 php文件

<?php `git pull`;?>

设置服务器以使S SH键存在。类似的东西:

key. cat ~/.ssh/id_rsa.pub

在GitHub上设置服务挂钩。输入 WebHook网址

http://your.domain.com/path/to/yourfile.php

全部设定后。每次推送到GitHub时,该文件都将部署您服务器上的所有工作。

答案 5 :(得分:1)

使用任何类型的Webhook都需要为该钩子部署一个侦听器,然后从您的侦听器服务器主机触发该动作。

您可以立即使用快捷方式(2018年10月)使用 GitHub Actions (2018年10月)。

  

GitHub Actions允许您连接和共享容器以运行软件开发工作流程。在GitHub或任何外部系统上以任何语言轻松构建,打包,发布,更新和部署项目,而无需自己运行代码。

请参见 Actions :推送是only one of the possibilities behind Actions!

  

工作流可以由GitHub平台事件(即推送,发布,发布)触发,并且可以运行一系列串行或并行操作作为响应。结合并配置针对社区构建和维护的您所了解和喜爱的服务的操作。