Odpowiadam na odpowiedź Jazzschmidta, ponieważ nie mam wystarczającej liczby rep ... previousBuild robi źle, ponieważ dostaje poprzednio uruchomioną pracę tego samego typu, a nie pracę, która uruchomiła bieżący jeden. Jeśli ta praca została po raz pierwszy uruchomiona przez kogoś, dostaniesz to. W przeciwnym razie odpowiedź będzie miała wartość NULL, co spowoduje wyjątek próbujący uzyskać jego identyfikator użytkownika.
Aby uzyskać przyczynę "oryginalną", musisz przejść przez przyczyny używając UpstreamCause. To, co skończyło się robi, chociaż mogą istnieć inne sposoby:
@NonCPS
def getCauser() {
def build = currentBuild.rawBuild
def upstreamCause
while(upstreamCause = build.getCause(hudson.model.Cause$UpstreamCause)) {
build = upstreamCause.upstreamRun
}
return build.getCause(hudson.model.Cause$UserIdCause).userId
}
wygląda to tak „czarnej liście”, choć, zgodnie z [kod źródłowy] (https://github.com/jenkinsci/script- security-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/scriptsecurity/sandbox/whitelists/blacklist # L45-L46), chociaż nie jestem pewien dlaczego. – mkobit
Tak, musisz zatwierdzić skrypt lub określone metody lub uruchomić na zewnątrz obszaru izolowanego. – izzekil
To naprawdę nie powinno być wymagane. Zapisano problem: https://issues.jenkins-ci.org/browse/JENKINS-41272 – BitwiseMan