我很乐意使用git来托管我的网站,并希望我可以在线登录一个平台来与之配套(例如Github)。您可能会想,在这种情况下,尽管我不想使用Github页面,但Github页面对我来说是理想的选择。我想像使用Github Enterprise一样将所有这些托管在我自己的服务器上(但免费)。
我已经找到了Gitlab,并且想知道是否仍然可以像Github页面一样使用Gitlab。可能吗?
我很乐意使用git来托管我的网站,并希望我可以在线登录一个平台来与之配套(例如Github)。您可能会想,在这种情况下,尽管我不想使用Github页面,但Github页面对我来说是理想的选择。我想像使用Github Enterprise一样将所有这些托管在我自己的服务器上(但免费)。
我已经找到了Gitlab,并且想知道是否仍然可以像Github页面一样使用Gitlab。可能吗?
Answers:
好消息!
从8.3(2015年12月)开始,GitLab拥有“ GitLab页面”。 https://about.gitlab.com/2015/12/22/gitlab-8-3-released/
GitLab.com(运行EE)上提供了此功能,您可以在其中拥有免费的,无限的存储库(公共/私有)。
这是有关GitLab页面的文档,说明了如何免费在GitLab上托管静态网站。 http://doc.gitlab.com/ee/pages/README.html
我不确定您要问什么。您说要托管在自己的服务器上,但您的问题却是要托管像gitlab页面一样的托管服务器,而不是您自己的服务器。
无论如何,这可能会有所帮助
这就是我所做的
mkdir folderforwebsite
cd folderforwebsite
git init
echo "hello world" > index.html
git add index.html
git commit -m "initial commit"
我现在在本地有一个仓库。将其复制到服务器
scp -r ../folderforwebsite username@mydomain.com:/path/from/root/to/webfolder
现在,我将其放在远程服务器上。
ssh name@mydomain.com 'cd path/to/webfolder; git checkout -b live`
现在,网站上既有master分支又有live分支。我这样做是因为AFAICT您无法推送到当前分支。因此,现在我们有一个“活动”分支,该分支当前在远程服务器上,而一个“主”分支则不在
最后将遥控器添加到我的本地仓库中
git remote add web ssh://name@mydomain.com/path/from/root/to/webfolder
现在,无论何时我想更新网站,我都会将内容检入本地master分支,然后运行此脚本
#!/bin/sh
set -e
set -v
git push web master
ssh username@mydomain.com git merge --ff-only master
在git push
推我的更改在Web服务器上的非当前分支。在ssh
随后登录到网络服务器和快进到当前分支的变化,“大师”。在这种情况下,“活动”分支。
--ff-only
说如果服务器上有更改,则失败。
如果服务器上有更改,我可以使用以下命令将其拉入本地主机
git pull web live
在更多的事情上。在执行任何此操作之前,我在远程服务器上设置了SSH密钥,因此无需键入任何密码
这绝对与github或gitlab没有任何关系。我也可以将我的更改推送到那里,但它们没有连接。
有一个实现此目的的nodejs项目:https : //github.com/Glavin001/GitLab-Pages
通过在Google上搜索各种问题,我找到了一种方法。这可能不是最佳方法,并且可能过于复杂,但是它应该起作用,这是主要的事情。不过,如果您知道更好的方法或可以找到一种方法,请让我知道!
我发现您可以通过Git挂钩将代码部署到服务器上。您需要做的只是将SSH插入服务器,创建一个git仓库,然后为您设置一个挂钩以将提交推送到该仓库。这将允许您将提交推送到服务器,但此时与gitlab无关。
下一步是将gitlab的推入URL添加到同一远程。这样,您每次都将同时推送到gitlab和站点本身。结果,gitlab存储库和实际站点都将同步。虽然这是一个hack,但绝对没有效率。
我从以下博客文章中找到了如何通过git将代码部署到服务器上:http : //sebduggan.com/blog/deploy-your-website-changes-using-git/
我发现您可以从stackoverflow上的此问题向git中的遥控器添加两个推入URL:https : //stackoverflow.com/questions/14290113/git-pushing-code-to-two-remotes
正如我所说,如果您能找到更好的方法,请告诉我。这将起作用,但这意味着具有相同代码的两个版本。当然,这很麻烦,并且会浪费服务器的存储空间。
当前,您能做的最好的就是将GitLab CI推送到像Amazon S3这样的静态服务器。
如果可以使用Git进行部署,则以下(未解决的)问题特定于如何使用gitlab进行部署:https ://stackoverflow.com/questions/14288288/gitlab-repository-mirroring
功能跟踪器对此有特定要求:http : //feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-pushed-to-repos