目次

インストール

 JBoss Application server 4.2 または EAP 4.2 へのインストール

 ここ からダウンロードします。普通にインストールします。zipで配布されているものなら、好きなディレクトリへ展開するだけです。

JBoss Application Server をインストールしたら、jboss-4.2.X.GA という名前のディレクトリができているはずです。ここで X は、あなたがダウンロードしたサーバのマイナーバージョンです。現時点での最新版は 4.2.1 です。
もし、JBoss EAP 4.2 をインストールしたのなら、jboss-eap-4.2 という名前のディレクトリができているはずです。
ここでは、あなたがインストールした "jboss-eap-4.2/jboss-as" もしくは jboss-4.2.X.GA のディレクトリを $JBOSS_HOME と表記することにします。

 JENKINS_HOME の設定

JBoss Server を起動する前に、export JENKINS_HOME=<some dir> (UNIX) とするか set JENKINS_HOME=<some dir> (Windows) としてください。

 jenkins.war の配備

jenkins war を "$JBOSS_HOME/server/<your server>/deploy" へコピーします。通常は <your server> は "default" を利用しますが、"production" も利用可能です。ただし、その場合は、JBoss EAP をインストールしていて、2G以上のメモリが必要です。

 JBoss Server の起動

cd  $JBOSS_HOME
bin/run.sh -b 0.0.0.0 -c  <your server>
重要! もしセキュリティの確保が必要(jenkins security を有効化にして、信頼できないネットワークに接続している場合など)なら、jmxとwebコンソールについて、サーバそれぞれの方式に従って安全になっているかの確認をしてから、サーバを起動してください。JBoss EAP はデフォルトでは安全ですが、コミュニティがリリースしている"getting started" に従って一通り確認するのが良いでしょう。確認できるまでは、サーバを起動するときに "-b 127.0.0.1" をつけて、ローカルホストからのみのアクセス許可としましょう。

 Jenkins GUI へのアクセス

ブラウザから http://<machine name>:8080/jenkins を開きます。

追加の設定

JBoss startup

JBossをjenkinsのコンテナとして起動する場合、次の2つのオプション指定を推奨します。"-Djava.awt.headless=true" と "-Xmx<some reasonable value>" を指定しましょう。
最初のオプションは X サーバが有効となっていない UNIX環境で jenkins を利用するときに、無用なトラブルに会わないために必要です。headless モードに関する詳細情報は こちら。
次のオプションはサーバで利用可能なメモリの設定です。これは、どんな jenkins プラグインをjobsで利用するかに依存します(原文:Then setting maximum available memory for use by the server depends on jobs that will be executed as well jenkins plug-ins that get used.)。junitレポートプラグインでメモリ不足に出会ったことがあります。巨大なレポートを出力するのに非常に大量のメモリが必要になるというものでした。スレーブとのコミュニケーションをハンドリングするために、十分なメモリが必要であることを考慮してください(原文:Keep in mind that you will need to have enough memory to handle communications with slaves. )。そして、OOM(Out Of Memory、メモリ不足)が発生したときは、マスターで発生したのか、スレーブから発生したのか、必ず理解するようにしましょう(原文:And when getting OOM be sure to understand where does it come from - master or slave.)。jobごとの大量なjunitテストをこなせるようにするには、マスターとスレーブの両方のメモリーを増量する必要がありました。

これらのオプションをjenkinsへ渡すために、環境変数 JAVA_OPTS を使うことができます:

Linux: export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Xmx<必要と思われる値>"

Windows: set JAVA_OPTS=%JAVA_OPTS% -Djava.awt.headless=true -Xmx<必要と思われる値>

既存の環境変数設定とは別の環境変数を指定して子プロセス(job はそれらのうちのひとつ)を実行するために、run.sh/bat を修正することもできます。run.sh/batを修正しないで、私は次のような怪しいbashスクリプトを使っています:(原文:As well you can modify run.sh/bat to avoid having that environment variable set for the child processes (jobs are one of them) you run. I use the following ugly bash script to avoid modifying that:)

#!/bin/bash

if [[ `dirname "$0"` != "." ]]; then
   cd `dirname "$0"` || exit 2
   exec $SHELL -- `basename "$0"` "$@"
fi

(
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true $MAX_JAVA_MEM"
cd $JBOSS_HOME/bin
. run.sh -c default -b 0.0.0.0 -u $MCAST_ADDR -g Jenkins
) &> ~/jenkins.log < /dev/null &

JBOSS_HOME と MAX_JAVA_MEM の値についても確認しておきましょう。

セキュアな Jenkins

 コンテナへの権限付与委任時のログイン設定

詳細で完全なドキュメントは次を参照すること http://www.jboss.org/community/docs/DOC-12188

ここでは、簡易な方法のひとつについて解説します。ローカルインストールやJenkins専用のJBossサーバにおいては適切な方法です。もちろん、あなたが必要とする権限付与機構のどんなものでも実装をすることができます。さらなる情報は、JBossのマニュアルページを参照してください。ユーザフォーラムやメーリングリストは手助けを得るための最善の場所です。

最初にjenkinsを展開したものを配備する必要があります:

  • cd $JBOSS_HOME/server/<your server>/deploy/
  • mkdir jenkins.war
  • unzip <path>/jenkins.war
  • cd jenkins.war/WEB-INF
  • 次の内容で jboss-web.xml ファイルを作成:

            <jboss-web>                <security-domain>java:/jaas/jmx-console</security-domain>            </jboss-web>

 JBoss AS での権限付与とセキュリティの設定

  • JBoss Enterprise Application Platform を利用する際に必要な作業ステップのほとんどはすでにされています。
  • cd  $JBOSS_HOME/server/<your server>/conf/props
  • "jenkins=admin" を jmx-console-roles.properties ファイルへ追加
  • "jenkins=passwd" を jmx-console-users.propertiesファイルへ追加
  • サーバ再起動
    その後:
  • セキュリティを有効化
  • ユーザ "jenkins" でログイン。パスワードは "passwd"

jmx と web コンソールを安全にする:

  • $JBOSS_HOME/server/<your server>/conf/login-config.xml を編集
    • "<application-policy name = "jmx-console">" の行をコメントからはずし有効化
    • "<application-policy name = "web-console">" の行をコメントからはずし有効化
  • $JBOSS_HOME/server/<your server>/deploy/jmx-console.war/WEB-INF/jboss-web.xmlを編集
    • <security-domain> をコメントからはずし有効化
  • $JBOSS_HOME/server/<your server>/deploy/jmx-console.war/WEB-INF/web.xmlを編集
    • "A security constraint that restricts access..." の行の後をコメントからはずし有効化
  • $JBOSS_HOME/server/<your server>/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xmlを編集
    • <security-domain>をコメントからはずし有効化
  • $JBOSS_HOME/server/<your server>/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xmlを編集
    • "A security constraint that restricts access..."の行の後をコメントからはずし有効化

jmx-invokerを安全にする:

  • $JBOSS_HOME/server/<your server>/deploy/jmx-invoker-service.xmlを編集
    • "Uncomment to require authenticated users"の行の後をコメントからはずし有効化

HTTP-invokerを安全にする:

  • $JBOSS_HOME/server/<your server>/deploy/http-invoker.sar/invoker.war/WEB-INF/web.xmlを編集
    • <web-resource-name>HttpInvokers</web-resource-name> を見つける
    • 次の <url-pattern> 要素を追加
      • <url-pattern>/JNDIFactory/*</url-pattern>
      • <url-pattern>/EJBInvokerServlet/*</url-pattern>
      • <url-pattern>/JMXInvokerServlet/*</url-pattern>

You did twice the same so now you might be able to setup a different security domain for your jenkins installation and not "jmx-console" what  I suggest above (see creating jboss-web.xml). See links below for more.

 SSLへのログインリダイレクトを設定

 最初にSSLコネクタの設定が必要です。Please refer to  [http://www.jboss.org/community/docs/DOC-11989|http://www.jboss.org/community/docs/DOC-11989] which is a thorough resource if you cannot get it going with the commented out example configuration.
設定したら、jenkins用 web.xml に次の記載が必要です:

   <security-constraint>
    <web-resource-collection>
      <web-resource-name>Jenkins</web-resource-name>
      <url-pattern>/loginEntry</url-pattern>
      <url-pattern>/login</url-pattern>
      <!--http-method>GET</http-method-->
    </web-resource-collection>
    <auth-constraint>
      <role-name>*</role-name>
    </auth-constraint>
    <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </security-constraint>

Jenkins (JBoss) HTTP 用ポート

$JBOSS_HOME/server/<your server>/deploy/jboss-web.deployer/server.xml を編集して `<Connector port="8080"' を `<Connector port="<使いたいポート番号>"'に変更します。

コンテキストルートとバーチャルホスト

jboss-web.xmlを修正することで、"/jenkins"ではなく"/" で動作させることができます。

<context-root>/</context-root> <!-- コンテキストルートへ配備 - 非推奨 - 下記参照 -->
<virtual-host>host.example.com</virtual-host> <!-- 特定のバーチャルホストを指定したい場合 -->

"/jenkins"の下に配備されたものはそのままにしておいた方が良い。さもないといくつかのロケーションにアクセスできなくなります。両方を満たすためには、便利で使いやすいシンプルリダイレクションが使えます。そのためには、JBossサーバのデプロイディレクトリへ、次のファイルを作成してください。:

 redirect-jenkins.war/redirect.jsp
 redirect-jenkins.war/WEB-INF/jboss-web.xml
 redirect-jenkins.war/WEB-INF/web.xml

 redirect.jsp に次の内容を含めること:

<%
  response.sendRedirect("/jenkins");
%>

jboss-web.xml に次の内容を含めること:

<jboss-web>
    <context-root>/</context-root>
    <!-- <virtual-host>jenkins.example.com</virtual-host> -->
</jboss-web>

web.xml は次のような内容にすること:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

  <display-name>Redirecting to Jenkins</display-name>
  <description>
     Redirecting to Jenkins.
  </description>

  <welcome-file-list>
     <welcome-file>redirect.jsp</welcome-file>
  </welcome-file-list>

</web-app>

リンク