Czasami muszę wysłać wiadomość e-mail do wszystkich użytkowników Jenkins, na przykład ostrzegając ich, że Jenkins będzie w trybie offline w celu konserwacji. Poniższy skrypt podaje adresy e-mail wszystkich osób, o których wie Jenkins, ale obejmuje osoby, które nie mają kont, są to osoby, które wprowadziły zmiany, które spowodowały wygenerowanie kompilacji. Chciałbym usunąć je z listy e-mailowej, to znaczy, że lista powinna zawierać tylko tych użytkowników, którzy zobaczą na stronie securityRealm. Szukam pomocy, modyfikując skrypt. Dzięki.utworzyć listę e-mail wszystkich użytkowników
import hudson.model.User
import hudson.tasks.Mailer
def users = User.getAll()
for (User u : users) {
def mailAddress = u.getProperty(Mailer.UserProperty.class).getAddress()
print(mailAddress + "; ")
}
Wypróbowałem rozwiązanie 1 i zadziałało, to także wyprodukowało listę prawie natychmiast, gdzie moje rozwiązanie zajmuje około minuty. Dzięki Vitalii! –
Dziękuję za pewne rozwiązania. Ze względu na raportowanie naszych wyników stwierdziłem, że rozwiązanie 1 nie działa z wtyczką Active Directory używaną do uwierzytelniania (ta wtyczka nie ma funkcji getAllUsers()). Rozwiązanie 2 ostatecznie pomija nasze odwrotne proxy Apache'a httpd przed Jenkinsem, ponieważ uważam, że wylicza każdego użytkownika AD (wiele tysięcy w naszej firmie). Przypuszczam, że jest to przypadek rozwiązany przez produkt przechowujący własną bazę danych użytkowników, buforowanie z AD/LDAP. – jblaine
@jblaine dziękuję za zgłoszenie tego. W czym problem próbujesz rozwiązać? Nie sądzę, że chcesz wysłać tysiące ludzi naraz ... –