QA@IT

Gitフックでユーザ名

3921 PV

Git管理・Jenkinsを自動ビルド環境を作っております。

開発者がmasterブランチへpushしたらGitフックのpost-receiveを使って
Jenkinsへpull・ビルド・実行ファイルを作ってmasterブランチへpushしてます。
JenkinsマシンからのPushでも自動ビルドがまわってしまうので
どうにかしてJenkinsマシンからのPushかどうか特定できないか探しております。

何か良い方法ご存知ないでしょうか。

回答

環境がわかりませんがいくつか。

git log

質問を見るに今回はJenkinsがcommitしてpushしてるようですので、
単純には最終コミットがJenkinsになりそうですから、

/path_to_git/git log --pretty=format:"%an:%ae" -1

して <Jenkinsのgitユーザー名>:<Jenkinsのメールアドレス>かどうか確認できるのではないでしょうか。
(検証はしてないのでビルド中に中央のリポジトリが変化した場合に期待通りに動くかは確認した方がいいと思います)

ssh

push先のgitがLinux上で動作しているなら
jenkins用のアカウントをつくってssh経由でpushすれば
whoamiでカレントユーザー名が取得できると思いますのでそれを利用できるかもしれません。

別のgitサーバーを利用する

あとは認証付きのgitサーバー(Gitoliteとかstashとか)を使っている場合は取得できる方法を用意している可能性があります(フック対象が変わるかもしれませんが)。

編集 履歴 (0)

アドバイスありがとうございます。
Jenkinsでジョブを新しく作ってそのジョブでコミットした開発者が誰かを特定した後
実行ファイルをビルド、プッシュするジョブをコールするようにして意図した動作に出来ました。

編集 履歴 (0)
  • gitフックではなくJenkins側で対応されたという事ですね。
    それで解決したのであればご自分の回答をacceptして解決済みにしてください。(質問が未解決で残ってしまうので)
    -
  • べスアンサーへの認定ガイダンスが分かりづらいようでしたので、本日、改修いたしました。もし、問題が解決したようでしたら、ベストアンサーに認定してください。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。