にわかプラス

にわかが玄人になることを夢見るサイトです。社会や国際のトレンド、プログラミングや電子工作のことについて勉強していきたいです。

JenkinsをWindows上に複数インスタンスたてる方法【Windows10】

sponsor

Windows上にJenkinsを複数たてたいモチベーション 自分が使える開発用にサーバ機は1台で、そこにJenkinsをたてたいけど、他のプロジェクトですでにJenkinsがたっている。

その別プロジェクト用のJenkins使ってもいいんだけど、万が一壊してしまったり、環境を汚してしまうのも嫌だなぁ。

っていう時が無いでしょうか。

そんなときにJenkinsを複数インスタンスたてられればいいんですが、どうやら一工夫いるようです。

本ページではWindows10上にJenkinsを複数インスタンスたてる方法を紹介します。

実施環境

  • Windows10
  • Jenkins 2.176.3

1. インスタンスを通常通りインストールする

まだ1つもJenkinsがインストールされていない前提。

通常通りJenkinsを1つインストールする。

2. インストールしたフォルダをコピーする

a. インスタンスを停止させる

コマンドプロンプトでC:\Program Files (x86)\Jenkins に行き、インスタンスを停止させる。

jenkins stop

念のため、サービスからも除外する。uninstallとあるが、何かが削除されるわけではなく、この後に行うinstallでまたサービスに登録できる。

jenkins uninstall
b. インストールしたフォルダをコピーし2インスタンス目を作成

C:\Program Files (x86)\Jenkins にインストールされると思うので、

C:\Program Files (x86)\Jenkins2nd などの適当な名前でコピーする。

この時このディレクトリには2つのJenkinsフォルダが存在する。

C:\Program Files (x86)\Jenkins
C:\Program Files (x86)\Jenkins2nd

3. 2個目のインスタンス設定を行う

1つめのインスタンスは通常通り使うため、特に設定は必要ない。 2つ目のインスタンスを立ち上げようとするとうまく立ち上がらないので、共存できるように設定する。

コピーしたフォルダ配下のC:\Program Files (x86)\JenkinsA ¥jenkins.xmlを開き編集する

Before

<service>
    <id>Jenkins</id>
    <name>Jenkins</name>
    <description>This servie runs Jenkins automation server.</description>
    <env name="JENKINS_HOME" value="%BASE%"/>
    <!--
    if you'd like to run Jenkins with a specific version 
  <  ・・・(省略)
-->
    <executable>%BASE%\jre\java</executable>
    <arguments>-Xrs -Xmx256m -Dhudson ・・・(省略) --httpPort=8080 --webroot="%BASE%\war"</arguments>

After

<service>
    <id>Jenkins2nd</id>
    <name>Jenkins2nd</name>
    <description>This servie runs Jenkins automation server.</description>
    <env name="JENKINS_HOME" value="%ProgramData%"\Jenkins2nd/>
    <!--
    if you'd like to run Jenkins with a specific version 
  <  ・・・(省略)
-->
    <executable>%BASE%\jre\java</executable>
    <arguments>-Xrs -Xmx256m -Dhudson ・・・(省略) --httpPort=8088 --webroot="%BASE%\war"</arguments>

プロセスIDとnameを任意の同じ名前にする。 ここではディレクトリと同じJenkins2ndとしている。

    <id>Jenkins2nd</id>
    <name>Jenkins2nd</name>

Jobなどの作業ファイルの場所を指定する。 ここでは%ProgramData%"\Jenkins2ndを作成しそこを指定している。
%ProgramData%はC:\ProgramDataを意味する。

    <env name="JENKINS_HOME" value="%ProgramData%"\Jenkins2nd>

参考 Windows の Jenkins で JENKINS_HOME を別のフォルダーに変更する方法 - てっく煮ブログ

ポートを指定。任意の使っていないポートを指定する。 ここでは8080から8088に変更している。

    <arguments>-Xrs -Xmx256m -Dhudson ・・・(省略) --httpPort=8088 --webroot="%BASE%\war"</arguments>

4. インスタンスの起動

C:\Program Files (x86)\Jenkins でコマンドプロンプトを立ち上げ以下を行いWindowsサービスへの登録を行う。

jenkins install

C:\Program Files (x86)\Jenkins2ndでも同様に「jenkins install」を行う。

各フォルダで以下を行いそれぞれのインスタンスを立ち上げる。

jenkins start

以上でJenkinsが2インスタンス、1つのWindows上に立ち上がる。

以下はJenkinsのインスタンス数に限らず行う設定。

5. Proxyの設定

a. GUIで設定

ブラウザでJenkinsにアクセスすると、設定画面が表示されるので、表示に従ってProxy設定を行う。

b. ファイルで設定

1インスタンス目でProxyを設定している場合、 C:\Program Files (x86)\Jenkins\proxy.xmlがあるため、それをコピーする。これを行った後はJenkinsをリスタートさせる。

設定したProxyの確認方法 トップページから「jenkinsの管理」「プラグインの管理」「高度な設定」を選択

参考 WindowsのJenkinsでプラグインProxy設定 | ピタゴラ|熊本でシステム開発、広告や求人支援を行っています

6. Jenkins設定の確認方法

http://localhost:8080/systemInfo

※8080は自分がインスタンスごとに指定したポートに変更 にアクセスすると、設定情報の一覧が現れるので、変更したところなどを確認できる。

おわりに

あんがい探してもJenkinsを複数インスタンスたてる方法がありませんでしたので、ここにメモします。 一つのJenkinsで複数プロジェクトを上手に分けて管理するのと、そもそもインスタンスを分けてしまうのどっちが楽なんでしょうかね。 Jenkinsの管理人がいるなら1インスタンスでもいいけど、管理者不在で開発者がよしなに環境を構築するなら複数インスタンス合ったほうが安心しますね。