Jenkins Pluginを作成してみた。


Jenkins Pluginを作成/公開してみました。

Call Remote Job Plugin

Jenkinsから、リモートのJenkinsのタスクを起動できるプラグインです。
リモートのタスクが失敗すると、こちらのタスクも失敗で終わります。

複数チーム・複数プロダクトで出来上がるプロダクトを作るときにチームごとにJenkinsを分けて管理したい、とかいう時に使ってください。

で、Jenkinsプラグイン公開手順が、巷の情報や、本の情報だとうまく行かなかったので、ここで公開しておきます。

Jenkins Pluginのリリース中に
The git-clone command failed.
とか、
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy (default-deploy) on project call-remote-job-plugin: Failed to deploy artifacts: Could not transfer artifact org.ukiuni.callOtherJenkins:call-remote-job-plugin:hpi:1.0.11 from/to maven.jenkins-ci.org (http://maven.jenkins-ci.org:8081/content/repositories/releases): Failed to transfer file: http://maven.jenkins-ci.org:8081/content/repositories/releases/org/ukiuni/callOtherJenkins/call-remote-job-plugin/1.0.11/call-remote-job-plugin-1.0.11.hpi. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

的なログが出たら、このページは役に立つかもしれません。

では、リリース手順。


1. githubリポジトリを作ります。

https://github.com/ukiuni/call-remote-job-plugin な感じです。
ハイフン区切り、小文字が習慣だそうです。

上げるべきファイルは
/src
pom.xml

だけです。あとは適時。mvnプロジェクトですと、targetフォルダとかできてると思いますが、それは必要ありません。.gitignoreファイルで設定してください。サンプルはこちら

2. jenkinsci.orgのアカウントを作ります。

こちらでアカウントを作成します。

3. ~/.m2/setting.xmlにjenkinsci.orgのアカウント情報を追記

こんな感じで、2でとったアカウントをsetting.xmlの末尾に入力します。

~/.m2/setting.xml
<settings>
 ・・・
  <servers>
    <server>
      <id>maven.jenkins-ci.org</id>
      <username>XXXXXX</username>
      <password>XXXXXX</password>
    </server>
  </servers>

</settings>

4. メーリングリストにお願いをする。

日本Jenkinsユーザ会にお願いして、gitリポジトリのフォークと、jenkinsci.orgのコンポーネント追加をお願いします。
私がやったのは、こんなかんじでした。曽我部さん、ありがとうございました。

5. pom.xmlを修正する。

いくつか修正します。
の中身、バージョン名の最後は-SNAPSHOTにします。
タグをルートに追加します。4でフォークしてもらったリポジトリを追記。

pom.xml(抜粋)
<scm>
    <connection>scm:git:ssh://github.com/jenkinsci/XXXXXXXX.git</connection>
    <developerConnection>scm:git:ssh://[email protected]/jenkinsci/XXXXXXXX.git</developerConnection>
    <url>https://github.com/jenkinsci/XXXXXXXX.git</url>
  </scm>

6. gitにssh接続できるように設定します。

.ssh/configに接続情報を追記します。

~/.ssh/config
Host github.com
  HostName github.com
  IdentityFile /Users/user/.ssh/github.key
  User XXXXX

/Users/user/.ssh/github.key にはssh-genkeyで鍵を作って、chmod 600 して、githup.comに/Users/user/.ssh/github.key.pubをアップロードしておきます。
ssh [email protected]にアクセス(アカウントはgitのまま)して、
You've successfully authenticated, but GitHub does not provide shell access.
と表示されれば、OK.

7. リリースする。

mvnプロジェクトのある(pom.xmlのある)ディレクトリで、以下のコマンドを実行します。

mvn release:prepare release:perform
コツは-Dusernameと-Dpasswordをつけ「ない」こと。usernameとpasswordは本来jenkinsci.orgへの接続に使うものなのに、コマンドにつけちゃうと、github.comの接続にも使っちゃってビルドが失敗します。

以上で、無事リリースが完成します。