Jenkinsプラグイン開発 環境構築に関するメモ(on Windows7:Mavenによる雛形プラグイン作成)
参考にしたのはこの辺り。
- Jenkinsプラグインの作り方
- View more presentations from Kiyotaka Oku
- Jenkinsプラグイン開発
- View more PowerPoint from Takahisa Wada
- Jenkinsプラグイン開発〜リリースまで〜 - wadatkaの日記
- Jenkinsのプラグインを作ろう!<作成環境準備編> - wadatkaの日記
上記チュートリアル等に倣って進めていたのですが、思わぬところでコケてしまったのでその辺の経緯も併せて、記録としてメモ。
Javaインストール
- Javaのバージョン確認。
C:\>java -version java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1.6.0_31-b05) Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
Maven2インストール
- 入手(Maven2)
- http://maven.apache.org/download.html
- 入手バージョン:apache-maven-2.2.1-bin.zip
- 導入バージョンを確認。
C:\>mvn -version Apache Maven 2.2.1 (r801777; 2009-08-07 04:16:01+0900) Java version: 1.7.0_03 Java home: C:\jdk1.7.0_03\jre Default locale: ja_JP, platform encoding: MS932 OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"
初期環境構築
<settings> <pluginGroups> <pluginGroup>org.jenkins-ci.tools</pluginGroup> </pluginGroups> <profiles> <!-- Give access to Jenkins plugins --> <profile> <id>jenkins</id> <activation> <activeByDefault>true</activeByDefault> <!-- change this to false, if you don't like to have it on per default --> </activation> <repositories> <repository> <id>maven.jenkins-ci.org</id> <url>http://maven.jenkins-ci.org/content/groups/artifacts/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven.jenkins-ci.org</id> <url>http://maven.jenkins-ci.org/content/groups/artifacts/</url> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>
- 任意のフォルダを作成し、そこでプラグイン作成用のコマンドを実行。…がしかし、ここでエラー。
C:\work_jenkinsplugin>mvn -cpu hpi:create [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'hpi'. [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error building POM (may not be this project's POM). Project ID: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 Reason: Cannot find parent: org.jenkins-ci:jenkins for project: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 for project org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 [INFO] ------------------------------------------------------------------------ [INFO] For more information, run Maven with the -e switch [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Tue May 01 01:24:35 JST 2012 [INFO] Final Memory: 1M/58M [INFO] ------------------------------------------------------------------------ C:\work_jenkinsplugin>
- 『-e』オプションを付けて再度実行するとこんな感じのエラーログが。
C:\work_jenkinsplugin>mvn -e -cpu hpi:create + Error stacktraces are turned on. [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'hpi'. [INFO] org.jenkins-ci.tools: checking for updates from maven.jenkins-ci.org [INFO] org.jenkins-ci.tools: checking for updates from central [INFO] org.apache.maven.plugins: checking for updates from maven.jenkins-ci.org [INFO] org.apache.maven.plugins: checking for updates from central [INFO] org.codehaus.mojo: checking for updates from maven.jenkins-ci.org [INFO] org.codehaus.mojo: checking for updates from central [INFO] artifact org.jenkins-ci.tools:maven-hpi-plugin: checking for updates from maven.jenkins-ci.org [INFO] artifact org.jenkins-ci.tools:maven-hpi-plugin: checking for updates from central Downloading: http://maven.jenkins-ci.org/content/groups/artifacts//org/jenkins-ci/tools/maven-hpi-plugin/1.74/maven-hpi-plugin-1.74.pom 6K downloaded (maven-hpi-plugin-1.74.pom) Downloading: http://maven.glassfish.org/content/groups/public//org/jenkins-ci/jenkins/1.17/jenkins-1.17.pom 185b downloaded (jenkins-1.17.pom) [WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '6c9fd3d150b8a5f0ca676f49b8ed603793cabebb'; remote = '<html> <head><title>301' - RETRYING Downloading: http://maven.glassfish.org/content/groups/public//org/jenkins-ci/jenkins/1.17/jenkins-1.17.pom 185b downloaded (jenkins-1.17.pom) [WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '6c9fd3d150b8a5f0ca676f49b8ed603793cabebb'; remote = '<html> <head><title>301' - IGNORING [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error building POM (may not be this project's POM). Project ID: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 Reason: Cannot find parent: org.jenkins-ci:jenkins for project: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 for project org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 [INFO] ------------------------------------------------------------------------ [INFO] Trace org.apache.maven.lifecycle.LifecycleExecutionException: Error resolving version for 'org.jenkins-ci.tools:maven-hpi-plugin': Unable to read the metadata file for artifact 'org.jenkins-ci.tools:maven-hpi-pl ugin:pom': Cannot find parent: org.jenkins-ci:jenkins for project: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 for project org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPlugin(DefaultLifecycleExecutor.java:1549) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptor(DefaultLifecycleExecutor.java:1851) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.segmentTaskListByAggregationNeeds(DefaultLifecycleExecutor.java:462) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:175) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.plugin.version.PluginVersionResolutionException: Error resolving version for 'org.jenkins-ci.tools:maven-hpi-plugin': Unable to read the metadata file for artifact 'org.jenkins- ci.tools:maven-hpi-plugin:pom': Cannot find parent: org.jenkins-ci:jenkins for project: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 for project org.jenkins-ci.tools:maven-hpi-plugin:maven-plugi n:1.74 at org.apache.maven.plugin.version.DefaultPluginVersionManager.resolveMetaVersion(DefaultPluginVersionManager.java:682) at org.apache.maven.plugin.version.DefaultPluginVersionManager.resolvePluginVersion(DefaultPluginVersionManager.java:187) at org.apache.maven.plugin.version.DefaultPluginVersionManager.resolvePluginVersion(DefaultPluginVersionManager.java:91) at org.apache.maven.plugin.DefaultPluginManager.verifyPlugin(DefaultPluginManager.java:179) at org.apache.maven.plugin.DefaultPluginManager.loadPluginDescriptor(DefaultPluginManager.java:1642) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPlugin(DefaultLifecycleExecutor.java:1540) ... 15 more Caused by: org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException: Unable to read the metadata file for artifact 'org.jenkins-ci.tools:maven-hpi-plugin:pom': Cannot find parent: org.jenkins- ci:jenkins for project: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 for project org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 at org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedProject(MavenMetadataSource.java:200) at org.apache.maven.project.artifact.MavenMetadataSource.retrieve(MavenMetadataSource.java:299) at org.apache.maven.plugin.version.DefaultPluginVersionManager.resolveMetaVersion(DefaultPluginVersionManager.java:673) ... 20 more Caused by: org.apache.maven.project.ProjectBuildingException: Cannot find parent: org.jenkins-ci:jenkins for project: org.jenkins-ci.tools:maven-hpi-plugin:maven-plugin:1.74 for project org.jenkins-ci.tool s:maven-hpi-plugin:maven-plugin:1.74 at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1396) at org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:823) at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromRepository(DefaultMavenProjectBuilder.java:255) at org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedProject(MavenMetadataSource.java:163) ... 22 more Caused by: org.apache.maven.project.InvalidProjectModelException: Not a v4.0.0 POM. for project org.jenkins-ci:jenkins at C:\Users\(XXXXX)\.m2\repository\org\jenkins-ci\jenkins\1.17\jenkins-1.17.pom at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1599) at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1571) at org.apache.maven.project.DefaultMavenProjectBuilder.findModelFromRepository(DefaultMavenProjectBuilder.java:562) at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1392) ... 25 more [INFO] ------------------------------------------------------------------------ [INFO] Total time: 15 seconds [INFO] Finished at: Tue May 01 01:35:21 JST 2012 [INFO] Final Memory: 2M/58M [INFO] ------------------------------------------------------------------------ C:\work_jenkinsplugin>
…と、ここでつぶやきを見てくださっていたKohsuke Kawaguchi (TwitterID:@kohsukekawa)さんから天の声が!
という事で、内容を置き換えて試して見る。確かにURL等が異なってますね。
<settings> <pluginGroups> <pluginGroup>org.jenkins-ci.tools</pluginGroup> </pluginGroups> <profiles> <!-- Give access to Jenkins plugins --> <profile> <id>jenkins</id> <activation> <activeByDefault>true</activeByDefault> <!-- change this to false, if you don't like to have it on per default --> </activation> <repositories> <repository> <id>repo.jenkins-ci.org</id> <url>http://repo.jenkins-ci.org/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>repo.jenkins-ci.org</id> <url>http://repo.jenkins-ci.org/public/</url> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>チュートリアルに関しては更新が入る模様です。ありがとうございます!
- 行けました!最初のハードルはクリア出来ました。
C:\work_jenkinsplugin>mvn -e -cpu hpi:create : : [INFO] [hpi:create {execution: default-cli}] Enter the groupId of your plugin: org.example [INFO] Defaulting package to group ID: org.example Enter the artifactId of your plugin: sample [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating Archetype: maven-hpi-plugin:1.82 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: org.example [INFO] Parameter: packageName, Value: org.example [INFO] Parameter: package, Value: org.example [INFO] Parameter: artifactId, Value: sample [INFO] Parameter: basedir, Value: C:\work_jenkinsplugin [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] ********************* End of debug info from resources from generated POM *********************** [INFO] Archetype created in dir: C:\work_jenkinsplugin\sample [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7 minutes 57 seconds [INFO] Finished at: Tue May 01 01:53:04 JST 2012 [INFO] Final Memory: 21M/214M [INFO] ------------------------------------------------------------------------ C:\work_jenkinsplugin>
- プロジェクトが作成された事を確認し、
C:\work_jenkinsplugin>dir ドライブ C のボリューム ラベルは ローカル ディスク です ボリューム シリアル番号は 8609-AF4E です C:\work_jenkinsplugin のディレクトリ 2012/05/01 01:55 <DIR> . 2012/05/01 01:55 <DIR> .. 2012/05/01 01:53 <DIR> sample 0 個のファイル 0 バイト 3 個のディレクトリ 150,406,033,408 バイトの空き領域 C:\work_jenkinsplugin>
- 移動→hpiファイルの作成実施。
C:\work_jenkinsplugin>cd sample C:\work_jenkinsplugin\sample>mvn package : [INFO] [hpi:hpi {execution: default-hpi}] [INFO] Exploding webapp... [INFO] Copy webapp webResources to C:\work_jenkinsplugin\sample\target\sample [INFO] Assembling webapp sample in C:\work_jenkinsplugin\sample\target\sample [INFO] Generating hpi C:\work_jenkinsplugin\sample\target\sample.hpi [INFO] Generating C:\work_jenkinsplugin\sample\target\sample\META-INF\MANIFEST.MF [INFO] Building jar: C:\work_jenkinsplugin\sample\target\sample.hpi [INFO] Building jar: C:\work_jenkinsplugin\sample\target\sample.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 28 minutes 57 seconds [INFO] Finished at: Tue May 01 02:24:28 JST 2012 [INFO] Final Memory: 74M/333M [INFO] ------------------------------------------------------------------------ C:\work_jenkinsplugin\sample>
- プロジェクト配下、targetフォルダに*.hpiファイルが出来てます。
- Jenkinsを起動、[Jenkinsの管理]→[プラグインの管理]→[高度な設定]で作成したファイルを指定、[アップロード]実行。
- Jenkinsを再起動の後、プロジェクト作成。すると候補に挙がってくる。値を設定し、保存。
- ビルド実行。結果が出力されてました。
ひとまず第一段階クリア。後はEclipse等での開発環境を試して、既存で公開されているプラグインを読み解く所まで行ければ十分かな。
作業進行に際してアドバイスをしてくださった川口さん、ありがとうございました!