web-dev-qa-db-ja.com

Githubのミラーリポジトリを更新するためにGitlab webhookを作成する方法は?

Pushイベントが発生するたびに、Gitlab内にwebhookを作成してGithubのミラーリポジトリを自動的に更新したいと思います。これを確認しました page ですが、それがどのように行われるのか理解できませんでした。

私のGitlabバージョンは6.5です。設定ページは次のとおりです。

inserir a descrição da imagem aqui

URLに何を入れるべきですか?リポジトリを更新するスクリプトをどこに配置する必要がありますか?

35
Yamaneko

そのためにwebhookは必要ありません。通常の受信後フックは非常にうまく機能します。

このようなフックを作成して使用するには、gitlabがインストールされているサーバーにログインし、gitユーザーのsshキーを作成するだけです。

Sudo -u git ssh-keygen -f /home/git/.ssh/reponame_key

(プロンプトが表示されたらパスフレーズを入力しないでください)

Githubアカウントに移動し、公開キー(/home/git/ssh/reponame_key.pubとして作成されています)をデプロイキーとしてプロジェクトに追加します。 https://help.github.com/articles/managing-deploy-keys をご覧ください。ヘルプが必要な場合は.

それが完了したら、gitサーバーとgithubの間の接続を設定するだけです:gitユーザーのssh設定にエイリアスを追加します(/home/git/.ssh/configに次の行を追加します-存在しない場合は作成します)

Host reponame  
IdentityFile /home/git/.ssh/reponame_key  
HostName github.com  
User git 

次に、作成したエイリアスを使用して、新しいリモートをリポジトリに追加します。

cd /home/git/repositories/namespace/reponame.git

git remote add --mirror github reponame:youruser/reponame.git

すべてが整ったので、実際のフックを作成する必要があります。

cd /home/git/repositories/namespace/reponame.git/hooks

echo "exec git Push --quiet github &" >> post-receive

chmod 755 post-receive

Gitは実行前にフックが実行可能かどうかをチェックするため、lastcommandは非常に重要です。

それでおしまい!

(実際のアカウントに応じて、reponame、namespace、およびyouruserを置き換えて楽しんでください)。

最後の注意:名前とアバターをgithubでのコミットの近くにしたい場合は、gitlabで使用しているメールアドレスがgithubアカウントにインクされたアドレスの1つであることを確認してください。それ以外の場合は、gitlabユーザー名が表示されます。

40
novalore

独自のGitLabをホストしていない場合、GitLab.comは回避策なしでこの機能を直接導入しています。

  1. プロジェクト内から歯車アイコンを使用してMirror Repositoryを選択します
  2. 下にスクロールしてリモートリポジトリにプッシュします
  3. チェックマークリモートミラーリポジトリ:リモートミラーのブランチ、タグ、およびコミットをこのリポジトリから1時間ごとに自動的に更新します。
  4. 更新するリポジトリを入力します。 GitHubの場合、次のようにURLにユーザー名とパスワードを含めることができます。https://yourgithubusername:[email protected]/agaric/guts_discuss_resource.git —コメントに記載されているように、ここではログイン資格情報の代わりにGitHubアクセストークンを使用する方がmuchより安全です。私がテストしたときに答えを更新します。
29
mlncn

WebHooks処理には、sinatra Webサーバーを使用しています。

require 'sinatra'
post '/pew' do
  puts JSON.parse request.body.read
  # here can be placed signal code to run commit processing script
end

pushイベント(またはその他)のwebhookをGitLab内のhttp://localhost:4567/pewに登録します。この瞬間から、各コミットでgitlabはコミット情報をurlに送信します。

1
Nikolay Ruban