Continuous Integration

Jenkins Pipeline Multibranch Fehler

Die Jenkins-Plugins Pipeline (früher Workflow) und Pipeline Multibranch sind recht neue Plugins. Neuerdings trat beim Schreiben eines Jenkinsfile ein Fehler auf:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use …

Ursache

Das Problem das hier auftritt, tritt deshalb auf, weil man aus sicherheitstechnischen Gründen nicht alle Funktionen in einem Skript zulassen möchte. Vor allem nicht, wenn man ein Skript mit Hilfe eines Jenkinsfile startet. Sonst könnte z.B. ein böswilliger einfacher Benutzer u.a. auch die Berechtigungen ändern. Um das Skript dennoch aufrufen zu können, muss der Admin diese Funktion erst in eine White-List eintragen. Erst, wenn diese Funktion in einer White-List ist, tritt der obiger Fehler nicht mehr auf. Wer mehr Details erfahren möchte, kann das hier machen.

Auf welche White-List diese Funktion geschrieben wird, wird im nächsten Abschnitt gezeigt. Das kann aber nur der Administrator machen.

Lösung

In Jenkins auf Jenkins verwalten, dann dort auf In-process Script Approval.

Auf der Seite findet man dann zwei oder drei große Textfelder, in man jedoch nicht schreiben kann. In dem obersten Textfeld, mit dem Text Signatures already approved: darüber, sind die Funktionen drin, die auf dieser White-List stehen.

Nun müssten dort auch drei Knöpfe zu finden sein mit den Texten Approve, Approve assuming permission check und Deny.

Wenn man meint, dass die Funktion gut genug ist um auf der White-List zu landen, dann klickt man auf Approve, ansonsten auf Deny. Hat man auf Approve gedrückt, müsste man das Jenkinsfile nochmal starten um zu sehen, ob es nun durch läuft. Manchmal kann es auch passieren, dass man mehrere Funktionen erst auf die White-List setzen muss, bevor das Skript dann ganz durchläuft.