うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

Git + Jenkins + Groovyの連携3 #kyon_mmAdvent

kyon_mm Advent Calendar

つぎのリンクにあるAdventCalendarの四日目です。
http://connpass.com/event/1457/

おしながき

GradleでJenkinsプラグインインストール自動化
ビルド後をGroovyPostBuildで自由自在に操る

準備

  1. Groovyのインストール
  2. Gradleのインストール
  3. 対象のJenkinsサーバーからjenkins-cli.jarをダウンロード

3については、Jenkinsの画面をひらき、[Jenkinsの管理] -> [Jenkins CLI]とすすむと次のような画面が出ます。赤枠のリンクをクリックするとjenkins-cli.jarがダウンロードできます。
僕はjenkins.warと同じディレクトリにおいておくとわかりやすいかなって同じ場所にしています。

GradleでJenkinsのプラグインインストール自動化

JenkinsはそのGUIが優れている事で、プラグインの追加なども非常に簡単に行えますが、Jenkinsサーバー毎に同じプラグインをインストールする作業が増えると面倒になります。
そこで、Jenkins CLIの出番です。
Jenkins CLIをダウンロードする画面を見てわかるとおり、Jenkins CLIによって多くの事を行う事が可能です。
Jenkins CLI自体はCLI(Command Line Interface)なのでなにで実行してもよいのですが、Groovyでやってみましょう。
次のようなスクリプトになります。
指定する必要があるのは「JenkinsサーバーのURL」「インストールしたいプラグインの名前」です。
ここで注意が必要なのは「インストールしたいプラグインの名前」です。
これはJenkinsの「プラグインの管理」画面の各タブ上に表示されている名前ではありません。「JenkinsのプラグインWikiに表示されているID」になります。プラグインWikiは「プラグインの管理」から見れる各プラグイン名をクリックすると開きます。


Gradleスクリプトは次の感じになります。
この例では、MSBuild, BuildPileLine, Gitなどをインストールしています。

def jenkins_home = $/d:\Apps\jenkins\jenkins.war/$
def jenkins_cli = $/d:\Apps\jenkins\jenkins-cli.jar/$
def jenkins_url = $/http://localhost:9001//$

defaultTasks 'all'

def plugins = ["MSBuild", "build-pipeline-plugin", "git", "configurationslicing", "jobConfigHistory", "groovy-postbuild", "nunit", "preSCMbuildstep", "ssh-slaves", "mercurial", "dynamicparameter", "git-server"]

task all << {
        plugins.each{p ->
        println "----Installing $p Plugin"
                ant.java(jar:jenkins_cli, fork:true){
                        arg(value: "-s")
                        arg(value: jenkins_url)
                        arg(value: "install-plugin")
                        arg(value: p)
                }
        }
}


これを実行すると次のような表示になります。失敗した場合は「Java Result:1」と出ると思うので、「サーバーのURL」や「プラグインの名前」が間違っていないか確認してください。

これに関してはリポジトリで公開しています。参考にしてみてください。
https://bitbucket.org/kyon_mm/jenkinsplugininstall


ビルド後をGroovyPostBuildで自由自在に操る