2015-01-20 14 views
7

Tôi đã tạo tập lệnh groovy cho Plugin Công việc Jenkins mới, https://github.com/jenkinsci/workflow-plugin. Tôi muốn gửi thư cho người dùng đã bắt đầu công việc khi cần nhập liệu cho bước tiếp theo. Tôi đã cố gắng tìm kiếm API nhưng tôi không thể tìm thấy bất kỳ điều gì về việc nhận địa chỉ email của người dùng.Cách lấy địa chỉ e-mail của người dùng Jenkins hiện tại để sử dụng trong tập lệnh groovy

Tôi sẽ nghĩ về điều gì đó như thế này.

import hudson.model.User 
def user = User.current() 
def mailAddress = user.getMailAddress() 

Có cách nào để có được địa chỉ người dùng Jenkins hiện tại bằng tiếng groovy không?

Trả lời

10

Tôi tìm thấy một cách:

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() 
+1

Từ 1.4, bạn nên sử dụng 'currentBuild.rawBuild' thay vì tìm kiếm công việc và yêu cầu' lastBuild' của nó. –

4

Bạn có thể truy cập vào các đối tượng của người sử dụng hiện tại với phương pháp current()

def user = hudson.model.User.current(); 

Địa chỉ email có thể được lấy ra theo cách tương tự như những gì bạn đã làm trong câu trả lời của bạn.

print user.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress(); 
+0

Trong lệnh công việc plugin 'hudson.model.User.current();' trả về người dùng SYSTEM. Không phải người dùng đã bắt đầu xây dựng. Trong hệ thống thiết lập của chúng tôi không có địa chỉ thư để trả về null. – mipmip

+0

@mipmip thì câu trả lời của bạn là chính xác. – satrun77

+0

Đúng. Tôi vui vì điều này được giải quyết :) – mipmip

1

Nếu bạn có quyền truy cập vào biến build trong mã Java của plugin của bạn (ví dụ trong phương pháp setUp() của lớp mà kéo dài BuildWrapper), bạn có thể nhận hiện đang đăng nhập sử dụng theo cách này:

@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() 
... 
} 

Tôi chưa thể có được người dùng đã đăng nhập bằng cách sử dụng User.current().getId(), nó luôn trả lại cho tôi 'SYSTEM'.

Hy vọng điều đó sẽ hữu ích!

0
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() 
Các vấn đề liên quan