2016-12-15 11 views
1

異なるユーザによる異なるコミットからなる変更をリモートリポジトリにプッシュしている人のgitユーザ名/電子メールを見つける必要があります。jenkins git pluginを使用してgitでリモートrepoにプッシュしたユーザーを特定する方法はありますか?

プッシュは、gitblit経由でPost-Receiveフックをトリガーし、jenkinsジョブをトリガーし、非ユーザ固有のSSH認証を使用しています。

答えて

0

私はgitblitユーザーを定義し、変更をプッシュするためにそれを使用

  1. に持っていました。
  2. my jenkinsジョブをパラメータ化されたジョブに変更し、ユーザー名(myuser)のパラメータを定義します。
  3. 私のフックにユーザ名を追加してください。

です。

<property environment="env" /> 
<target name="xx" description="xx"> 
    <echo message="${env.myuser}" /> 
</target> 

def triggerUrl = jenkinsUrl + "/job/" + jenkinsJob + "/buildWithParameters?token=" + jenkinsToken + "&myuser=" + user.getName() 
new URL(triggerUrl).getText() 

myuserのは、Antスクリプトの例として、ここでは、今的環境変数であります

2

ジェンキンスは簡単な方法ではありません。私も同様の問題があり、適切な解決策を見つけるまでに時間がかかりました。

私は、Git Plugingit logという環境変数の組み合わせを使用しました。 - 現在の

GIT_PREVIOUS_COMMITのSHA - 最初に構築された、前のSHAは同じ ブランチからコミット(現在SHA

GIT_COMMIT

Gitのプラグインは、二つの環境変数を提供していますブランチでビルド)

git Web Hook trジェンキンスの仕事を引き出します。

一方、git logは、formatコマンドオプションを使用して著者名と著者メールを取得する手段を提供します。

したがって、あなたはそれぞれの作者の名前とメールがあなたの前の間でコミットを取得することができ、これら二つのオプションは、ジェンキンスジョブをトリガしたコミット組み合わせ:GIT_PREVIOUS_COMMITと現在のコミット:

:以下 git logコマンドを使用して GIT_COMMIT
git log $GIT_PREVIOUS_COMMIT..$GIT_COMMIT --pretty=format:%an/%ae 

実行中のシェルでは、Jenkinsジョブで実行します。 gitプロジェクトのルートにいることを確認してください。

関連する問題