2011-09-05 10 views
24

私たちは、linode上にVPSを持ち、gitHub上でコードをホスティングしています。 gitHubにプッシュすると、どのように設定すれば、自動的に私たちのlinodeサーバーにプッシュされますか? LinodeサーバーでPHPを使用しています。GitHubからサーバーへの自動プッシュ配信

ありがとうございました。

+0

http://serverfault.com/ – sashang

答えて

21

おそらくGitHub's post-receive hooksを使用します。

要約すると、GitHubは、誰かがリポジトリにプッシュすると、提供されたURLにPOSTします。あなたのlinode VPSで動く短いPHPスクリプトを書いて、POSTを受け取ったときにGitHubから引っ張ってください。

+0

でこれを投稿するともっと役立つかもしれませんが、これはすばらしいと思いますが、どのようにPHPからgithubを引き出すのですか? –

+1

私はいくつかのライブラリが存在すると仮定しますが、最悪の場合、理想よりも 'exec'の使用が多い –

+0

余分な洞察力Kristianに感謝します! –

13

私は小さなGithub-Auto-DeployサーバーをPythonで書いています。設定ファイルに

  • リポジトリのURLを持つ新しいpost-receive service hook
  • のGithubのマッチングローカルリポジトリのパスにあなたのドメインを入力します
  • サーバはgithubのからの要求を受信し、ローカルリポジトリパス
  • にgitのプルを実行しますまた、あなたが1つを提供する場合は、展開のためのシェルスクリプトを実行します
+2

あなたのライブラリは私自身の実装を開始するよう促しました。 https://github.com/danneu/captain-githook良いものよ、おい。 – danneu

3

私は私の独自の基本的な配置ツール(カールとよく似ていますが、PHPでは) dは自動的にrepoから新しい更新をプルダウンします - https://github.com/jesalg/SlimJim - 基本的にはgithub post-receive-hookを待ち受け、プロキシを使って更新スクリプトを起動します。

2

たぶん私は、コンテキストの外だが、私は私のコマンドラインなどからプッシュする場所を手動で選択することを好む:git push linode

は私Linodeのサーバにリポジトリのコンテナを作成し、これを行うには、ポスト受けるフックを作成しましたそれは、最後に私のフォルダをチェックアウト

/var/repo/hooks/ touch post-receive nano post-receive chmod +x post-receive

にポスト受けるフックを作成Gitのレポコンテナ mkdir /var/repo && cd /var/repo git --bare init

を作成コミットプッシュ

ポスト受信コンテンツ #!/bin/sh git --work-tree=/var/www/ --git-dir=/var/repo checkout -f

ローカルリポジトリに git remote add linode [email protected]<linode ip|domain>:/var/repo git push linode

あなたのコードは、今あなたがこのチュートリアルを参照することが

+0

興味深い。有難うございます。私はLinodeの推奨に従って、@root userを使用しないでください。これには、git repoディレクトリと/ var/wwwに対するより緩い権限が必要です。私はここでそれを行う方法に関する関連情報を見つけました:http://stackoverflow.com/a/6448326/2112538 –

0

を展開されている:それが説明要するに


Automatically Updating Your Website Using GitHub's Service Hooks次のステップ:

.gitフォルダに、以下の内容のサーバーを作成してください。 S SHキーのためのあなたのサーバが存在する

<?php `git pull`;?> 

セットアップ。何かのように:

key. cat ~/.ssh/id_rsa.pub 

GitHubでサービスフックを設定します。すべてが設定されている

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

ウェブフックのURLを入力します。このファイルはGitHubにプッシュするたびにサーバー上のすべての作業を展開します。

関連する問題