Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Jenkinsプラグイン開発ノウハウ3 - リリース

More than 3 years have passed since last update.

Jenkinsプラグイン開発ノウハウシリーズ

  1. Jenkinsプラグイン開発ノウハウ1 - 環境構築
  2. Jenkinsプラグイン開発ノウハウ2 - 開発とテスト
  3. Jenkinsプラグイン開発ノウハウ3 - リリース

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に繋がります。

jenkins.png

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でも問題ありません。

jenkins_restart.png

1.3. プラグインの動作確認

http://localhost:50001/jenkins/ にアクセスしてインストールしたプラグインが動いていることを確認しましょう。

JenkinsのUIでは適当な名前でジョブを作成 -> ジョブの設定 -> ビルド手順の追加 -> ジョブの作成という項目があればインストールに成功しています。

jobcreate01.png

2. リリース

JenkinsのプラグインはGithubのjenkinsciグループで管理されています。
https://github.com/jenkinsci/

自分のアカウントでリポジトリを作り、その後にjenkinsciにforkをしてもらう必要があるのでその手順を紹介したいと思います。

2.1. Jenkinsユーザグループアカウントの作成

https://jenkins-ci.org/account/

2.2. リリース準備

今まではサンプルプラグインで開発を進めてきたので、もし実際に自分で開発してリリースする際にはいくつかのルールに従ってpom.xmlを修正が必要になります。

以下修正するべきポイントで自分が作成したプラグインに合わせて修正してください。
プロジェクト名はGithubのリポジトリ名とは異なり、アッパーキャメルケースで、単語の接続はスペースを用います。
一部省略

pom.xml
<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で管理するのがルールと成っています。

  • 1. Jenkins Wikiにアクセス
  • 2. Add -> Pageをクリック wiki1.png
  • 3. ページタイトルとページコンテンツを入力
    タイトル 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
  • 4. LocationをJenkins > Pluginsと設定
  • 5. Labelをプラグインの特徴に合わせて設定 All Labels - Jenkins Wikiを参考にしてみてください。特に右にあるPopular Labels Labelを正しく設定して少し待つとJenkins Wiki - Pluingsの一覧に表示されるようになります。
  • 6. save

まとめ

以上でJenkinsプラグイン開発でフローは全て完了です。
みなさんの参考になれば幸いです。

参考

日本語公式プラグイン開発チュートリアル
日本語公式リリース手順
Jenkinsプラグインを公開する - Qiita
Jenkins Pluginを作成してみた。 - Qiita
Jenkinsプラグイン開発~リリースまで~ - wadatkaの日記

sonatard
組み込みC言語ネットワークスタック開発者からGoバックエンドエンジニアにジョブチェンジしました。 最近はTypeScript, React(Hooks), GraphQL, SwiftUIに夢中。
https://github.com/sonatard/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away