我可以像使用github页面一样通过gitlab托管我的网站吗?


20

我很乐意使用git来托管我的网站,并希望我可以在线登录一个平台来与之配套(例如Github)。您可能会想,在这种情况下,尽管我不想使用Github页面,但Github页面对我来说是理想的选择。我想像使用Github Enterprise一样将所有这些托管在我自己的服务器上(但免费)。

我已经找到了Gitlab,并且想知道是否仍然可以像Github页面一样使用Gitlab。可能吗?


像gitlab一样,您的意思是GitLab的减价和仅通过推送到git repo即可更新网站的能力吗?
2014年

我的意思是当我在gitlab存储库中进行更改时,让我的网站自动更新,所以是的。
Ben Watkins 2014年

1
GitHub Pages仅使用Jekyll。因此,请安装+提供静态页面的Web服务器,并可能会引入一些git钩子来自动部署推送的内容,基本上就可以完成了。
Ajedi32

嘿@ Ajedi32这种方法的问题是,对于每个新项目,您都具有git repo和Web服务器设置。使用GitHub页面,这只是您要推送的另一个分支。
fiorix

@fiorix是的,如果您想将事情自动化到那种程度,您可能需要一个稍微复杂的解决方案。虽然仍然可行,但是您只需要以某种方式连接到GitLab项目创建系统(尽管我不知道确切的程度,我的猜测是最简单的方法可能涉及监视文件系统,或者可能需要对GitLab API进行一些调用)。
Ajedi32

Answers:



5

我不确定您要问什么。您说要托管在自己的服务器上,但您的问题却是要托管像gitlab页面一样的托管服务器,而不是您自己的服务器。

无论如何,这可能会有所帮助

这就是我所做的

在本地PC上

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没有任何关系。我也可以将我的更改推送到那里,但它们没有连接。



2

通过在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

正如我所说,如果您能找到更好的方法,请告诉我。这将起作用,但这意味着具有相同代码的两个版本。当然,这很麻烦,并且会浪费服务器的存储空间。


1

当前,您能做的最好的就是将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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.