新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

JenkinsをWindowsサーバーに入れるときに引っかかった点

Jenkinsを新しくWindowsサーバーにインストールして、最新版で新しいプラグインを使おうと考えた。

その程度のことなのにいくつも引っかかる点があって結構時間がかかってしまったので、気を付けるべき点としてまとめておこうと思う。

なお、インストールはJenkins単独ではなくTracLightningを使って行なった。

 

.NET3.5が必須である

インストーラの実行中に.NET3.5のインストールが走るようだが、サーバーOSではそのインストールが失敗する。

サーバーの役割画面で別途.NET3.5を追加する必要がある。

 

サービスをインストールするときはJRE必須

バッチファイルからの実行では正常に動いていたが、サービスとしてインストールするとエラーを出すようになった。

java.exeのProcess.Startで例外を出していたため、JREが足りないのだと判断して追加インストールをしたら動くようになった。

また、クライアントOSのようにJREをオンラインインストールしようとするとダウンロードしたファイルがIEのセキュリティ強化の対象になって実行できない。

ダウンロードしたファイルのプロパティを開いてブロックを解除してから実行する必要がある。

 

ここまでくるとようやく必須条件がそろう。

これらの必須条件がないと、原因がはっきりしないエラー(例外など)で失敗する羽目になる。

必須条件はそろったが・・・しかし、まだまだインストール関連の問題は続く。

 

サービスとしてインストールした時は、「Jenkinsを起動」バッチファイルの時とポートが異なる

TracLightningをインストールした時、「Jenkinsを起動」バッチファイルでのポートは80になるようだ。http://localhost/jenkins/でアクセスできる。

ところが、サービスとしてインストールすると別のポートになる。画面上は「Jenkinsを起動しなおして自動でリロードします」のようなことが書かれているので気づきづらいが、サービスでの待ち受けポートは8080。http://localhost:8080/jenkins/にアクセスする必要がある。

 

サービス無しで起動する時は、管理者権限で起動すべき

Windowsサービスとしてインストールしない場合は、スタートメニューにある「Jenkinsを起動」のバッチファイルでJenkinsを起動する。

スタートメニューなのでうっかり普通にクリックしてしまうが、そうするとユーザー権限になる。その状態だと普通に使っている分には動作するが、アップデートやプラグインのインストールが失敗する。ヘタするとそれ以降起動しなくなる。(一度その状態になってしまった)

では「Jenkinsを起動」バッチファイルを右クリックして管理者権限で起動を選べばよいかというと、それだけではまだ足りない。何も言わずに終了してしまう。

 

管理者権限でバッチを叩くときは、カレントフォルダを変更する必要がある

UACでの管理者権限実行をすると、カレントフォルダがバッチファイルの場所ではなくSystem32になってしまう。そのため、「Jenkinsを起動」のバッチファイル(Jenkins.bat)は失敗する。

これを防ぐには、cmd.exeを管理者権限で起動してカレントフォルダをJenkins.batがあるフォルダに移動したうえでJenkins.batを実行すればよい。

何度も使うなら、Jenkins.batの頭に

cd /d %~dp0

を追加すると便利。これはバッチファイル実行フォルダにcdするコマンドなので、System32と同じドライブにバッチファイルがあれば右クリックでの管理者権限起動だけで実行できるようになる。

 

ここまでが、インストール・アップデートをする上での注意事項。

さらに、プラグインをインストールしようとして次の点に引っかかった。

 

Jenkinsをアップデートしたあと、プラグイン一覧を見ても最新情報にはなっていない。

Jenkinsをアップデートすることで、最新版専用のプラグインが使えるようになる。ちなみに今回はWorkflowを使おうとしていた。

しかし、そのプラグインが表示されない。アップデートしたからと言って、プラグイン一覧がリロードされるわけではないらしい。

更新ボタンを押さないと、最新版で使用可能になったプラグインは表示されない。

 

これだけの壁を潜り抜けて、ようやく最新のプラグインを試せる環境が整った。まさかプラグインを使い始める前にこれほど苦労するとは・・・。

この記事が同じような問題で引っかかっている人の参考になれば嬉しい。