在我们公司,我们拥有非常强大的基于Linux的构建服务器(具有40核的双Xeon)和不那么强大的win7笔记本电脑。我们用C / C ++语言构建我们的产品,用于深奥的CPU。编译器仅存在于Linux中。我可以用Qt Creator编辑我的git repo。它工作得很快,一切都很快。但我无法在笔记本电脑上构建源代码。我们有一个主要的git repo,我可以将相同的repo克隆到我的笔记本电脑和构建服务器。当我按下构建按钮时,我希望实现这一点,我的代码在构建服务器上神奇地构建。我做了一个概念验证解决方案,其中我的构建脚本在我的repo上执行git diff并将其scp到构建服务器,而不是ssh构建服务器在服务器repo上应用diff而不是启动并等待编译。但是这个解决方案并不是那么简单。我认为存在更好的接近/方法。那么如何在外部服务器上构建我的git repo?
答案 0 :(得分:4)
如果您可以在构建服务器上推送到 bare repo ,那么您可以将post-receive hook(.git/hooks/post-receive
)与该裸仓库相关联,这将是:
结帐代码
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
触发编译。
这样,你不必自己处理差异 您只需要将构建按钮关联到将分支推送到构建服务器的裸存储库的操作,而后接收挂钩将完成其余操作。
答案 1 :(得分:2)
您可以切换到forking Workflow,公司中的每个开发人员都有一个个人公共裸仓库,这是官方中央存储库的一个分支。
然后,当您想要构建更改时,将它们推送到您自己的个人公共仓库(的分支或主人)。
构建服务器不仅克隆官方中央存储库,还克隆您的公共存储库。因此,当您推送到个人公共存储库时,构建服务器会合并更改并为您执行个人构建。就像它可能已经为官方中央存储库做的那样?
请注意, 与@VonC的答案不同,只需更多地关注工作流程。个人公共回购可能在构建服务器上,就像@VonC建议的那样。或者它可能在其他地方。只要有一些地方公开,构建服务器以及您和您的同事就可以找到它。
答案 2 :(得分:2)
考虑将http://jenkins-ci.org/集成到您的工作流程中,以使用" git post-receive hook"来处理构建过程。触发构建为(由@VonC建议)。
如果您想使用"分岔工作流程"正如@flup建议的那样,你可以看一下http://gitlab.com,它提供了一种管理拉/合并请求,fork存储库和添加钩子的简单方法。