11

Github が更新をリモート サーバーに自動的にプッシュするように設定するにはどうすればよいですか?

これは、Github でコードベースを維持し、そのコードベースからウェブサイトを運営するのに役立ちます。

  1. 私は自分のコンピューターにレポを持っています。これが私が働いている場所です。

  2. 変更をローカル リポジトリにコミットし、Github リポジトリにプッシュします。

  3. Github リポジトリで、これらの変更をリモート サーバーにプッシュする必要があります。

私は一日中研究してきましたが、「フック」を使用するのは理にかなっているように思えます。おそらく、Github で「post-receive」フックを使用して、リモート サーバーにプッシュ コマンドを実行します。

助言がありますか?

4

2 に答える 2

10

私が理解しているように、github では「真の」フックを定義することはできません。ポストレシーブのように。代わりに、開発者にWebhookと呼ばれるものを提供します。これでできることは、リポジトリへのプッシュがあるたびに、指定した任意の URL に Web リクエストを発行することです。

したがって、できることは次のとおりです。リモートgitサーバーにWebサーバーをセットアップし、受信後にhttp呼び出しを行うようにgithubを構成します。github がリモート サーバーに通知するたびに、github からプルを実行します。

Webhook の使用方法については、こちらを参照してください: https://help.github.com/articles/post-receive-hooks

PS 真のフック メカニズムは、github のセキュリティ上の脆弱性の可能性があるため、サーバー上でカスタム コードを実行できます。だから彼らは、何も実行することはできませんが、やりたいことは何でもできるものを作りました。

于 2013-03-04T07:21:23.017 に答える
7

Yervand回答(賛成)を説明するために、このpeligangitを単純な HTTP サーバー (Amazon-ec2 インスタンスにインストールできる) の例と考えてください。

  • シンプルな HTTP サーバーを起動します。
  • GitHub Webhookからの POST をリッスンする
  • 新しいコミットをプルダウンします

ワークフロー

そのライブラリは、origin/master のメイン ブランチを取得し、リセットします。
それはそれを行う1つの方法です。(参照githook.py)

def hard_reset_repos(self):
    self.server.source_repo.fetch([self.server.source_repo.origin])
    self.server.source_repo.reset(['--hard', self.server.source_repo.originMaster])
于 2013-03-04T08:01:33.970 に答える