Jenkinsプラグイン開発ノウハウシリーズ
1. Jenkins Pluginの動作確認
リリースする前にmvn run
からの実行ではなく、実際に生成されたバイナリをJenkinsに配置して動作確認をしてみましょう。
1.1. Jenkinsのインストール
今回は動作確認にDockerコンテナのJenkinsを利用してみます。
MacでDockerを使うためにDocker for Macをインストールします。
続いてターミナルを開きます。
以下のようにDockerが使えるようになっていることを確認できます。
$ docker --version
Docker version 1.12.0-rc2, build 906eacd, experimental
$ docker-compose --version
docker-compose version 1.8.0-rc1, build 9bf6bc6
続いてJenkinsをdocker-composeで起動したいと思います。
作業フォルダを作ってdocker-compose.yml
を作成しましょう。
$ mkdir -p ~/docker/jenkins
$ cd ~/docker/jenkins
$ mkdir jenkins_home
$ cat << _EOF_ > docker-compose.yml
app:
image: jenkins
container_name: jenkins
ports:
- "50001:8080"
volumes:
- ./jenkins_home:/var/jenkins_hom
environment:
- JENKINS_OPTS=--prefix=/jenkins
_EOF_
# 起動
$ docker-compose up -d
# 実行できていることを確認
$ docker-compose ps
http://localhost:50001/jenkins/ にアクセスするとJenkinsに繋がります。
1.2. 作成したプラグインを配置
続いて自分で作成したプラグインをインストールしたJenkinsに配置してみましょう。
# 1度Jenkinsを起動するといくつかのファイルが作成されます。
$ ls jenkins_home
Download metadata.log nodeMonitors.xml secrets/
copy_reference_file.log nodes/ updates/
hudson.model.UpdateCenter.xml plugins/ userContent/
identity.key.enc queue.xml.bak war/
init.groovy.d/ secret.key
jobs/ secret.key.not-so-secret
# 作成したプラグインをJenkinsに配置
$ cp ~/jobcreate-builder-plugin/target/jobcreate-builder.hpi jenkins_home/plugins/
http://localhost:50001/jenkins/restart にアクセスするとJenkinsを再起動することが可能です。もちろんdocker-compose restart
でも問題ありません。
1.3. プラグインの動作確認
http://localhost:50001/jenkins/ にアクセスしてインストールしたプラグインが動いていることを確認しましょう。
JenkinsのUIでは適当な名前でジョブを作成 -> ジョブの設定 -> ビルド手順の追加 -> ジョブの作成という項目があればインストールに成功しています。
2. リリース
JenkinsのプラグインはGithubのjenkinsciグループで管理されています。
https://github.com/jenkinsci/
自分のアカウントでリポジトリを作り、その後にjenkinsciにforkをしてもらう必要があるのでその手順を紹介したいと思います。
2.1. Jenkinsユーザグループアカウントの作成
2.2. リリース準備
今まではサンプルプラグインで開発を進めてきたので、もし実際に自分で開発してリリースする際にはいくつかのルールに従ってpom.xml
を修正が必要になります。
以下修正するべきポイントで自分が作成したプラグインに合わせて修正してください。
プロジェクト名はGithubのリポジトリ名とは異なり、アッパーキャメルケースで、単語の接続はスペースを用います。
一部省略
<artifactId>jobcreate-builder</artifactId>
<name>JobCreate Builder Plugin</name>
<description>Sample Jenkins plugin for Japanese.</description>
<url>https://wiki.jenkins-ci.org/display/JENKINS/JobCreate+Builder+Plugin</url>
<developers>
<developer>
<id>YOURID</id>
<name>YOURNAME</name>
<email>YOUREMAIL@gmail.com</email>
</developer>
</developers>
2.3. Githubリポジトリの作成
JenkinsプラグインのGithubリポジトリ名は習慣として、小文字で単語の接続には-を使うということが決まっているので、このルールに従い作成しましょう。
またリリースに必要なファイルはsrc/
とpom.xml
のみになります。他の生成されるようなファイルは.gitignore
に登録してしまいましょう。
$ cd jobcreate-builder
$ cat << _EOF_ > .gitignore
target/
.project/
.classpath/
work/
.settings/
.idea/
*.iml
_EOF_
$ git init
$ git add -A :/
$ git commit -m "First commit"
// hubコマンドを使っていない方はGithubにアクセスしてリポジトリを作成してください。
// hubコマンドはhomebrew install hubでインストール可能です。
$ hub create
$ git push -u origin master
2.4. fork、issue trackerへのcomponent追加依頼
Jenkinsプラグインはjenkinsciグループ以下でリポジトリを管理します。
またJenkinsの各プラグインのissueはGithubのissueではなくJenkins - JIRAで管理されています。
これらを作成する権限はない方は、以下の日本Jenkisユーザ会のGoogleグループでforkとissue trackerへのcomponentの依頼を出します。
またfork依頼をする前にJenkins コミッタになる前に気をつけるべき、たった 1 つのこと - Kenichi Maehashi's Blogを参考に、参加グループのリポジトリを自動的にwatchとなる機能をオフにしておきましょう。
これを実施しないとfork依頼が受領されるとともにjenkinsciグループに参加することとなるため大量のメールに悩まされることになります・・・
forkしてもらうと同時にGithubのjenkisciグループへの招待メールが届くので参加してください。
数日するとforkの権限を持っている方がforkをして連絡をくれます。
2.5. リリース
$ git clone https://github.com/jenkinsci/jobcreate-builder-plugin.git
$ cd jobcreate-builder-plugin
$ mvn release:prepare release:perform
リリースに成功したかどうか確認してみましょう。
Jenkins -> Jenkinsの管理 -> プラグインの管理 -> 利用可能 -> http://localhost:50001/jenkins/pluginManager/available
リリース直後に反映はされません。私は、一晩寝て起きたらリリースされていました。
Jenkinsを終了している場合にはもう1度Dockerのターミナルを開いて、docker-compose.yml
があるディレクトリに移動してdocker-compose up -d
を実行してください。
2.6. プラグインのCI
リリースしたプラグインは以下のJenkinsでCIが実行されています。
自分のプラグインが存在することを確認してみましょう。
https://jenkins.ci.cloudbees.com/job/plugins/
2.7. Wikiの作成
Jenkinsのプラグイン紹介やChangeLogなどはWikiで管理するのがルールと成っています。
-
- Jenkins Wikiにアクセス
-
- ページタイトルとページコンテンツを入力
タイトル JobCreate Builder Plugin
コンテンツ
- ページタイトルとページコンテンツを入力
{hudson-plugin-info:pluginId=jobcreate-builder}
{excerpt}
This plugin to create jobs in a build step.
h1. Change Log
h2. Version 1.0 (Sep 23, 2015)
Initial release
-
- Locationを
Jenkins > Plugins
と設定
- Locationを
-
- Labelをプラグインの特徴に合わせて設定
All Labels - Jenkins Wikiを参考にしてみてください。特に右にあるPopular Labels
Labelを正しく設定して少し待つとJenkins Wiki - Pluingsの一覧に表示されるようになります。
- Labelをプラグインの特徴に合わせて設定
-
- save
まとめ
以上でJenkinsプラグイン開発でフローは全て完了です。
みなさんの参考になれば幸いです。
参考
日本語公式プラグイン開発チュートリアル
日本語公式リリース手順
Jenkinsプラグインを公開する - Qiita
Jenkins Pluginを作成してみた。 - Qiita
Jenkinsプラグイン開発~リリースまで~ - wadatkaの日記