新しいJenkinsワークフロープラグイン用のGroovyスクリプトを作成しました https://github.com/jenkinsci/workflow-plugin 。次のステップで入力が必要になったときに、ジョブを開始したユーザーにメールを送信したいと思います。 APIを検索しようとしましたが、ユーザーのメールアドレスを取得する方法が見つかりません。
こんな感じだと思います。
import hudson.model.User
def user = User.current()
def mailAddress = user.getMailAddress()
Groovyで現在のJenkinsユーザーのアドレスを取得する方法はありますか?
私は方法を発見しました:
import hudson.model.AbstractProject
import hudson.tasks.Mailer
import hudson.model.User
def item = hudson.model.Hudson.instance.getItem(env.JOB_NAME)
def build = item.getLastBuild()
def cause = build.getCause(hudson.model.Cause.UserIdCause.class)
def id = cause.getUserId()
User u = User.get(id)
def umail = u.getProperty(Mailer.UserProperty.class)
print umail.getAddress()
メソッドcurrent()
を使用して、現在のユーザーのオブジェクトにアクセスできます。
def user = hudson.model.User.current();
メールアドレスは、回答で行ったのと同じ方法で取得できます。
print user.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();
作成者名を取得して、それをメーリングレジストリなどの例に使用できます。
def author = ""
def changeSet = currentBuild.rawBuild.changeSets
for (int i = 0; i < changeSet.size(); i++)
{
def entries = changeSet[i].items;
for (int i = 0; i < changeSet.size(); i++)
{
def entries = changeSet[i].items;
def entry = entries[0]
author += "${entry.author}"
}
}
print author;
import hudson.tasks.Mailer;
import hudson.model.User;
import hudson.model.Cause;
import hudson.model.Cause.UserIdCause;
def cause = build.getCause(hudson.model.Cause$UserIdCause)
def id = cause.getUserId()
User u = User.get(id)
def umail = u.getProperty(Mailer.UserProperty.class)
print umail.getAddress()
プラグインのJavaコード(たとえば、build
を拡張するクラスのsetUp()
メソッド))のBuildWrapper
変数にアクセスできる場合は、この方法で現在ログに記録されているユーザーを取得できます:
@Override
public MyJenkinsPlugin setUp(AbstractBuild build, Launcher launcher, BuildListener listener)
String connectedUser = build.getCause(Cause.UserIdCause.class).getUserId();
String mail = User.get(connectedUser.getProperty(hudson.tasks.Mailer.UserProperty.class).getEmailAddress()
...
}
User.current().getId()
を使用してログに記録されたユーザーを取得できませんでした。常に「SYSTEM
」が返されました。
それが役に立てば幸い!