2016-12-21 3 views
1

Создание плагина Jenkins, который создает SimpleBuildStep.Jenkins Plugin Development Gradle Build

Он работает с maven hpi:run, но мне нужно, чтобы включить его в gradle

Моя проблема заключается в том, что, когда я бегу gradle server я могу видеть, установлен мой пользовательский плагин, но не на стадии сборки.

Я думал, что это мое исполнение, и я несколько раз менял его. Мне интересно, неправильная конфигурация.

У меня есть work каталог, который показывает и мой плагин отображается в work/plugins/ с .hpi и .hpl файл, но он по-прежнему не работает. Он работает только в мавена он также не показывает, когда я делаю экземпляр Docker Дженкинса (который всегда в Дженкинс версии 2)

Я все еще предполагая, что это мой build.gradle

plugins { 
    id "org.jenkins-ci.jpi" version "0.16.0" 
} 

jenkinsPlugin { 
    coreVersion = "2.0"            // Version of Jenkins core this plugin depends on. 
    displayName = "Test Jenkins Plugin"    // Human-readable name of plugin. 
    url = "http://wiki.jenkins-ci.org/display/JENKINS/SomePluginPage" // URL for plugin on Jenkins wiki or elsewhere. 
    shortName = "jetson"           // Plugin ID, defaults to the project name without trailing '-plugin' 
} 

group 'test' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 

sourceCompatibility = 1.5 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'org.jenkins-ci.main', name: 'ui-samples-plugin', version: '1.424.2' 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

EDIT: Попросите его работать. Теперь я могу использовать мой плагин в своем экземпляре.

Изменения:

После проверки файла hpl и читать. Я понял, что мой плагин Jenkins даже не регистрировал мои классы. Я понял, что мой build.gradle был в папке в корневом проекте. Поэтому, очевидно, я переместил build.gradle в корень.

Оттуда я заметил, что на самом деле они построили эти классы. По-прежнему не удалось заставить мой плагин фактически отображаться как шаг сборки, даже если он появился под установленной (той же старой проблемой). Я взял еще build.gradle из другого плагина и отредактировал для моего собственного использования. Это работает, однако я понятия не имею, почему.

* Мне также пришлось добавить отсутствующую зависимость, с которой я столкнулся, теперь, когда она фактически создала мой проект.

новый build.gradle:

buildscript { 
    repositories { 
     // The plugin is currently only available via the Jenkins 
     // Maven repository, but has dependencies in Maven Central. 
     mavenCentral() 
     maven { 
      url 'http://repo.jenkins-ci.org/releases/' 
     } 
    } 
    dependencies { 
     classpath 'org.jenkins-ci.tools:gradle-jpi-plugin:0.14.1' 
    } 
} 

apply plugin: 'java' 
apply plugin: 'org.jenkins-ci.jpi' 

repositories { 
    mavenCentral() 
    maven { 
    url "http://repo.jenkins-ci.org/releases/" 
    } 
} 

group = 'workday' 
version = '0.1.0-SNAPSHOT' 
description = 'Test AS A Service Plugin' 

jenkinsPlugin { 
    // version of Jenkins core this plugin depends on, must be 1.420 or later 
    coreVersion = '1.654' 

    // ID of the plugin, defaults to the project name without trailing '-plugin' 
    shortName = 'jetson' 

    // human-readable name of plugin 
    displayName = 'Jetson Test Plugin' 


    // use the plugin class loader before the core class loader, defaults to false 
    pluginFirstClassLoader = true 

    // optional list of package prefixes that your plugin doesn't want to see from core 
    maskClasses = 'groovy.grape org.apache.commons.codec' 

    // optional version number from which this plugin release is configuration-compatible 
    compatibleSinceVersion = '1.1.0' 


    // enable injection of additional tests for checking the syntax of Jelly and other things 
    disabledTestInjection = false 

    // the output directory for the localizer task relative to the project root, defaults to the value shown 
    localizerOutputDir = "${project.buildDir}/generated-src/localizer" 


    // plugin file extension, either 'jpi' or 'hpi', defaults to 'hpi' 
    fileExtension = 'hpi' 
} 

dependencies { 
    compile group: 'org.jenkins-ci.main', name: 'ui-samples-plugin', version: '1.424.2' 
     compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.14' 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

Я подозреваю, что это на самом деле имеет дело с новыми buildscripts блоками по какой-то причине

ответ

2

Вы, вероятно, нужно установить группу

group = 'org.jenkins-ci.plugins' 

и вы может удалить

apply plugin 'java' 

, как это делается внутри (я думаю)

Я не уверен, что вам нужно включать в UI-образцы-плагин либо, но если вы делаете это должно быть что-то вроде

dependencies { 
    jenkinsPlugins(group: 'org.jenkins-ci.main', 
        name: 'ui-samples-plugin', 
        version: '1.424.2', 
        ext:  'jar') 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

(непроверенные)

попытать wiki page для получения дополнительной информации

+0

ожидания группы в моем 'jenkinsPlugin' блоке? Я думал, что блок был для моей собственной информации о плагине, как мои группы и т. Д.? –

+0

также на странице вики-страницы, которую вы мне прислали, даже говорит, чтобы сделать все мои зависимостей плагина, как я. где вы получили соглашение о добавлении плагинов? –

+1

Я обновил свой ответ. Зависимости обсуждаются здесь https://docs.gradle.org/current/userguide/artifact_dependencies_tutorial.html. Возможно, вы не можете изменить группу, если вы не собираетесь выпускать плагин. – KeepCalmAndCarryOn

Смежные вопросы