2015-04-09 18 views
9

Poniższy skrypt do pluginu Jenkins Workflow:Jakie są techniki pozwalające uniknąć zatwierdzania skryptów za pomocą skryptu Groovy przepływu pracy Jenkins?

def mapping = readFile 'a file' 
mapping.eachLine { 
     def line = it.tokenize('|') 
     sh "${line[1]}" 
} 

wymaga aprobaty Scenariusz:

staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods tokenize java.lang.String java.lang.String 
staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods eachLine java.lang.String java.lang.String 

Aby mieć skrypt zakończą się pomyślnie kompilacji muszą być wykonywane, ręczne zatwierdzenie musi zostać wydane a następnie należy ponownie wykonać próbę kompilacji i tak dalej.

W przypadku dużych skryptów jest to dość żmudny proces, aby zachować białe metody aukcji.

Czy istnieje podzbiór metod groovy, które nie wymagają zatwierdzenia skryptu i/lub białego wykazu?

Odpowiedz

5

Wystarczy zatwierdzić nowo uruchomione metody w miarę ich pojawiania się.

Wtyczka Script Security zawiera już kilka metod dodanych do białej listy. Metody, które tu wymieniłeś, jeszcze się nie pojawiły. JENKINS-25804 domyślnie śledzi chęć umieszczenia na białej liście rutynowych metod obliczeniowych.

Zauważ, że jeśli używasz Groovy CPS DSL z SCM źródła skryptu, jest celowo nie ma opcji, aby wyłączyć trybpiaskownicy, to znaczy, aby użyć trybu zatwierdzania całego skryptu. Dzieje się tak dlatego, że administrator musi zatwierdzić cały skrypt po każdej zatwierdzonej edycji, bez względu na to, jak trywialny. W przeciwieństwie do źródła ze źródłem Groovy CPS DSL, każda zmiana dokonana przez administratora zostaje natychmiast zarejestrowana jako zatwierdzona bez osobnego kroku.

+0

Otrzymuję komunikat "BŁĄD: nie udało się ocenić groovy skryptu. org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Skrypty nie mogą używać metody groovy.lang.Script println java.lang.Object' - czy to oznacza nieprawidłowo skonfigurowany serwer? – MarkHu

Powiązane problemy