web-dev-qa-db-ja.com

githubページでできるように、gitlabでウェブサイトをホストできますか?

私はgitを使用して自分のWebサイトをホストし、オンラインでログインしてプラットフォームを使いたいと思っています(Githubのようなもの)。 Githubページは使いたくありませんが、どちらの場合でも、Githubページは私にとって完璧なルートになると思います。あなたがGithubエンタープライズで行うように、これをすべて自分のサーバーでホストしたいと思います(ただし無料です)。

私はGitlabを見つけましたが、とにかくGitlabをGithubページのように使用できるかどうか疑問に思っていました。出来ますか?

20
Ben Watkins

良いニュースです!

8.3(2015年12月)以降、GitLabには「GitLab Pages」があります。 https://about.gitlab.com/2015/12/22/gitlab-8-3-released/

この機能はGitLab.com(EEを実行)で利用でき、無料で無制限のリポジトリ、パブリック/プライベートを使用できます。

GitLab Pagesのドキュメントは、GitLabで静的Webサイトを無料でホストする方法を説明しています。 http://doc.gitlab.com/ee/pages/README.html

18
Heather

私はあなたが何を求めているのか本当に分かりません。自分のサーバーでホストしたいが、自分のサーバーではない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 [email protected]:/path/from/root/to/webfolder

今、私はそれをリモートサーバーに持っています。

ssh [email protected] 'cd path/to/webfolder; git checkout -b live`

これで、Webサイトにマスターブランチとライブブランチの両方があります。あなたが現在のブランチにプッシュできないので、私はこれを行います。これで、現在リモートにある「ライブ」ブランチと、そうでない「マスター」ブランチができました。

最後に、ローカルリポジトリにリモートを追加します

git remote add web ssh://[email protected]/path/from/root/to/webfolder

これで、Webサイトを更新したいときはいつでも、ローカルマスターブランチにチェックインして、このスクリプトを実行

#!/bin/sh
set -e
set -v
git Push web master
ssh [email protected] git merge --ff-only master

git Pushは、私の変更をWebサーバー上の現在でないブランチにプッシュします。 sshはウェブサーバーにログインし、「マスター」の変更を現在のブランチに早送りします。この場合、「ライブ」ブランチ。

--ff-onlyは、サーバーに変更があると失敗することを示します。

サーバーに変更がある場合、ローカルマスターに変更を加えることができます

git pull web live

もっと。これを行う前に、リモートサーバーにSSHキーをセットアップして、パスワードを入力する必要がないようにします

これはgithubまたはgitlabにはまったく接続していません。変更をそこにプッシュすることもできますが、それらは接続されていません。

5
gman

これを実装するnodejsプロジェクトがあります: https://github.com/Glavin001/GitLab-Pages

4

Googleでさまざまな質問を少し検索して、方法を見つけました。それは最善の方法ではないかもしれませんし、複雑すぎるかもしれませんが、うまくいくはずであり、それが主なことです。しかし、あなたがより良い方法を知っているか、それを見つけることができるなら、私に知らせてください!

Gitフックを介してサーバーにコードをデプロイできることがわかりました。必要なことは、サーバーにSSHで接続し、gitリポジトリを作成してから、このリポジトリにコミットをプッシュするためのフックを設定することだけです。これにより、コミットをサーバーにプッシュできますが、現時点ではgitlabとは関係ありません。

次のステップは、gitlabのプッシュURLを同じリモートに追加することです。この方法では、毎回gitlabとサイト自体の両方にプッシュします。その結果、gitlabリポジトリと実際のサイトの両方が同期されます。これはハックですが、間違いなく効率的ではありません。

このブログ投稿から、gitを使用してコードをサーバーにデプロイする方法を見つけました: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

Stackoverflowのこの質問から、gitのリモートに2つのプッシュURLを追加できることがわかりました: https://stackoverflow.com/questions/14290113/git-pushing-code-to-two-remotes

私が言ったように、より良い方法を見つけることができたら、私に知らせてください。これは機能しますが、同じコードの2つのバージョンがあることを意味します。もちろん、これは非常に面倒であり、サーバーのストレージの大きな無駄です。

2
Ben Watkins

現在、できる最善の方法は、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-リポジトリ