Песочница Groovy блокирует классы в workflow-cps-global-lib-plugin

У нас есть https://github.com/jenkinsci/workflow-cps-global-lib-plugin используется (репозиторий git) для создания общих помощников для конвейерных заданий. У меня возникают проблемы с заводной песочницей при попытке использовать класс из репозитория библиотеки рабочих процессов.

Я получаю это исключение:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified new <path_to_my_class>

Читая документацию плагина, у меня сложилось впечатление, что этому общему репозиторию доверяют, и классы, определенные там, не будут помещены в песочницу.

Кроме того, кажется, что если класс определен без ключевого слова «класс» в исходном файле, то есть просто реализует методы, проходит проверку безопасности песочницы, а не иначе. Но как я могу параметризовать конструктор без определения класса и конструктора?

Я хотел бы, чтобы следующий вариант использования работал без блокировки песочницей.

в каталоге «/org/mylib» я определил класс MyClass.groovy со следующей реализацией.

package org.mylib

class MyClass implements Serializable {
    MyClass(String someString) {
        this.data = someString
    }

    String data

    String data() {
        return this.data
    }
}

Почему это запускается в песочнице и как я могу это обойти?


person Samppa Kaartinen    schedule 27.01.2017    source источник
comment
Ваш класс находится в каталоге src/? Ваша библиотека определена для всего экземпляра Jenkins или только для папки? Каков пример конвейера, вызывающего это? Вопрос требует дополнительной информации, прежде чем на него можно будет дать правильный ответ.   -  person mkobit    schedule 05.12.2017


Ответы (2)


Если у вас нет кнопки подтверждения рядом с ним, это не блокировка. Скорее всего не сможет найти.

Фактическая документация, упомянутая на сайте плагина, гласит, что макет выглядит следующим образом:

(root)
+- src                     # Groovy source files
|   +- org
|       +- foo
|           +- Bar.groovy  # for org.foo.Bar class
+- vars
|   +- foo.groovy          # for global 'foo' variable
|   +- foo.txt             # help for 'foo' variable
+- resources               # resource files (external libraries only)
|   +- org
|       +- foo
|           +- bar.json    # static helper data for org.foo.Bar

Итак, мое текущее предположение заключается в том, что вы должны переместить его в каталог src.

person hakamairi    schedule 04.02.2017
comment
Помещение исходников в каталог src не помогает :/ - person Samppa Kaartinen; 06.02.2017

Если вы предоставляете статический метод в своем классе, который создает экземпляр (т. е. фабричный шаблон), он должен обойти этот аспект подключаемого модуля безопасности.

person Joseph    schedule 20.07.2017