Push
イベントが発生するたびに、Gitlab内にwebhookを作成してGithubのミラーリポジトリを自動的に更新したいと思います。これを確認しました page ですが、それがどのように行われるのか理解できませんでした。
私のGitlabバージョンは6.5です。設定ページは次のとおりです。
URLに何を入れるべきですか?リポジトリを更新するスクリプトをどこに配置する必要がありますか?
そのために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ユーザー名が表示されます。
独自のGitLabをホストしていない場合、GitLab.comは回避策なしでこの機能を直接導入しています。
https://yourgithubusername:[email protected]/agaric/guts_discuss_resource.git
—コメントに記載されているように、ここではログイン資格情報の代わりにGitHubアクセストークンを使用する方がmuchより安全です。私がテストしたときに答えを更新します。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に送信します。