継続的インテグレーションの環境構築で、Jenkinsを使うことになったのですが、Jenkinsのインストールをして、その後始まるプラグインのエラーで長らく悩まされておりました。。
「Install plugin」すると、以下の画像のようにエラーになってしまう。。
ようやく解決方法が分かったので、メモしておきます。
Docker上に環境構築する場合と、Windowsにサービスとしてインストールする場合とで対処法が微妙に異なっていたので、両方記載しますね。
Dockerの場合
dockerでjenkinsのイメージをpullして環境を作る場合、コンテナの起動時の引数として、JVMにプロキシの情報を渡す必要がありました。
docker run --name con_jenkins -p 8080:8080 -p 50000:50000 -v /jenkins_home:/var/jenkins_home --env JAVA_OPTS="-Dhttp.proxyHost=proxy_server -Dhttp.proxyPort=proxy_port -Dhttps.proxyHost=proxy_server -Dhttps.proxyPort=proxy_port" -d myimg/jenkins:1.0
httpとhttpsの両方を設定しないと通信エラーになってしまいます。
なお、私が試したときは、単純にlatestのイメージをpullすると上記オプションを指定してもプラグインのインストールに失敗したので、dockerfileを作成し、明示的にイメージを取得してイメージを作ってから、上記コマンドで起動しました。
# dockefileの記述
FROM jenkins:2.7.4
# その後、以下のコマンドでイメージをビルド
docker build --no-cache -t myimg/jenkins
Windowsにサービスとしてインストールする場合
Windowsにインストールした場合は、インストールしたディレクトリに「jenkins.xml」というファイルがあります。
その中に、JavaのJVMオプションを記載する箇所がありますので、そこに以下のように
-Dhttp.proxyHost=proxy_server -Dhttp.proxyPort=proxy_port -Dhttps.protocols=TLSv1.1,TLSv1.2
というオプションを追加します。
プロキシのサーバ(IPアドレス)とポート番号ですが、protocolsというのは、SSLハンドシェイクのエラーが出ていたため、追記しました。
以下の画像で言うと、赤枠の部分になります。
その後、以下のURLをブラザに入力して再起動し、再度プラグインのインストールを行います。
http://localhost:8080/restart
Jenkinsの管理コンソールからプロキシの設定を行う場合
上記の起動オプションを渡せば、プラグインのインストール時にプロキシが使われますが、「http://localhost:8080/manage」から管理コンソールで設定することも可能です。
管理コンソールを開き、「Jenkinsの管理」->「プラグインの管理」を選択します。
そして、「高度な設定」タブを選択して、「HTTP Proxyの設定」にプロキシサーバのホスト名またはIPアドレスと、ポート番号を設定します。
すると、Jenkinsをインストールしたディレクトリに「proxy.xml」という設定ファイルが出来て、プロキシー情報が書き込まれます。