2016-12-21 116 views
1

構建一個Jenkins插件,創建一個SimpleBuildStepJenkins Plugin Development Gradle Build

它與maven hpi:run但我需要切換到gradle

我的問題是,當我運行gradle server我可以看到安裝我的自定義插件,但它是不是在構建步驟。

我認爲這是我的版本,我改變了幾次。我想知道我的配置是否錯誤。

我有一個work目錄,顯示了和我的插件顯示在work/plugins/.hpi.hpl文件,但它仍然無法正常工作。它只能在行家還當我做詹金斯的泊塢窗實例(總是在詹金斯第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' 
} 

編輯不顯示:讓它工作。我現在可以在我的實例中實際使用我的插件。

變化:

檢查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' 
} 

(未經測試)

嘗試它的更多信息

+0

等待組wiki page在我的'jenkinsPlugin'塊?我認爲這個塊是爲了我自己關於像我的團體等插件的信息? –

+0

也在您發給我的wiki頁面中,它甚至會像我一樣說完成我所有的插件依賴項。你從哪裏獲得了添加插件的慣例? –

+1

我更新了我的答案。依賴關係在這裏討論https://docs.gradle.org/current/userguide/artifact_dependencies_tutorial.html如果你不打算髮布插件 – KeepCalmAndCarryOn

相關問題