Я пытаюсь разработать свой первый подключаемый модуль Jenkins и не уверен в нескольких проблемах:
Пока у меня есть класс, который создает новый тип задания. В основном он выглядит так же, как FreeStyleProject Дженкинса, и работает нормально.
1) Теперь хотелось бы, чтобы плагин создавал дополнительный раздел на странице конфигурации задания (нового типа). Я попытался добавить config.jelly в пакет ресурсов, но это не сработало. Затем я скопировал файл configure-entries.jelly Дженкинса из resources/hudson/model/Project и добавил сюда свою информацию. Это нормально делать так?
2) Кроме того, я хочу добавить кое-что на страницу проекта. Я обнаружил, что для этого можно использовать файл jobMain.jelly, но простое создание файла в пакете ресурсов ничего не меняет. Поэтому вместо этого я скопировал файл main.jelly Дженкинса из resources/hudson/model/AbstractProject и кое-что добавил сюда. Это нормально? Это работает, но я не уверен, что у меня могут возникнуть проблемы позже.
Заранее спасибо!
Разработка плагина Jenkins: можно ли копировать файлы желе и изменять их?
comment
Как вы думаете, вы могли бы переформатировать этот вопрос, чтобы это не был один большой абзац? Это облегчит еще несколько ответов
- person simonmorley   schedule 28.08.2014
Ответы (1)
Страница конфигурации
- Сначала вам нужен класс, который расширяет потомка BuildStepCompatibilityLayer (например, класс Recorder или Builder).
- Создайте
@DataBoundConstructor
для этого класса - Создайте дескриптор для этого класса как внутренний класс
Пример класса, расширяющего класс Builder:
package tryBuilder.tryBuilder; import org.kohsuke.stapler.DataBoundConstructor; import hudson.Extension; import hudson.model.AbstractProject; import hudson.model.FreeStyleProject; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.Builder; import org.kohsuke.stapler.DataBoundConstructor; public class BuilderExample extends Builder { @DataBoundConstructor public BuilderExample() { } @Extension public static class Descriptor extends BuildStepDescriptor<Builder> { @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return FreeStyleProject.class.isAssignableFrom(jobType); } @Override public String getDisplayName() { return "BuildstepName"; } } }
Строка, возвращаемая в методе getDisplayName()
(теперь «BuildstepName»), определяет имя шага сборки или действия в Jenkins.
- Теперь вам нужна карта в каталоге ресурсов с тем же именем, что и класс, созданный выше.
- Поместите config.jelly в этот каталог.
- In Jenkins, go to a job, then to config, next:
- If the class you made extends a class derived from Builder: Add build step
- Если созданный вами класс расширяет производную от класса форму Publisher: добавьте действие после этапа сборки.
- И выберите имя, которое вы установили в методе getDisplayName().
- Теперь ваш config.jelly должен быть виден в этом разделе.
Добавить на страницу проекта
- Создайте класс, реализующий Action (переопределите необходимые методы и присвойте им значение (не null))
- В созданном классе Builder/Publisher переопределите метод
getProjectAction(AbstractProject<?, ?> project)
и верните созданный выше класс, который реализует действие. - Переопределите метод `perform (сборка AbstractBuild, средство запуска средства запуска, прослушиватель BuildListener)' в классе Builder/Publisher и дайте ему вернуть значение true.
- Как это работало, ссылка видна на боковой панели на странице проекта.
- связать index.jelly с этим классом Action (в карте ресурсов с тем же именем, что и у класса Action)
- Вы увидите эту страницу, если перейдете по ссылке в боковой панели
- чтобы показать что-то на самой странице проекта нужно создать файл с именем floatBox.jelly (тоже в карте ресурсов с именем класса Action)
person
QuestionBomber
schedule
10.12.2014