GlassFish アップデートで障害発生

このサイトで稼働させてきた GlassFish 4.0 を新しい 4.1 にアップデートしたら Jenkins が動かなってしまいました。

GlassFish 4.0 は 4.1 のスナップショットより不安定だとか話があったので、Update Tool を使って 4.1 にアップデートして起動したら…動かない…あれ?

そんな訳で、コンフィギュレーションをゼロから作り直したり、必要もないのに (1台でw) クラスターにしていたのをシングル サーバーに変えたりとか、試行錯誤してみた結果、WordPress は復旧したものの Jenkins はどうやっても初期化エラーで動かないという問題が解消できませんでした。クラス ローダーの挙動に影響されてるように見えるんですがねえ。

Jenkins 解説書

オライリーから出版されている Jenkins の解説書です。Java 以外のネイティブ言語の自動ビルドがどの程度まで自動化できるのか調べたかったので購入したものですが、基本的に Java 中心でそれ以外はシェルでコマンドを書けばどんなことでもできるというぐらいしか書いてなかったので、本来の目的からすれば参考程度でした。Java がメインならこれだけでも十分役に立つと思います。

RAD Studio のパッケージ プロジェクトを Jenkins でビルドしてみた

RAD Studio のパッケージ プロジェクトを Jenkins を使ってバージョン別にバッチ ビルドするようにしてみたので記載する。

Jenkins スレーブ ノードの設定

RAD Studio を使ってビルドを実行するために、まず RAD Studio をインストールした PC を Jenkins のスレーブ ノードとして設定する。パッケージ プロジェクトを RAD Studio のバージョンごとにビルドを実行するために、ここで RAD Studio の各バージョンを識別するラベルを列挙しておく。

jenkins-slave-1

今回はビルド実行時に手動でスレーブを起動するので、起動方法を JNLP 経由とし、また可用性も必要時だけオンラインにする設定とする。(注: Windows のサービスとして登録しておけば常時オンラインにすることもできるのだが、RAD Studio のライセンス上「指名ユーザー」だけが使用しなければならないことになっているので、手動で起動することにした。)

さらに Jenkins プロジェクトでスレーブ ノードの環境を設定するために、環境変数 BDS と BDSCOMMONDIR のバージョンごとの値を設定しておく。(注: BDSINCLUDE は BDS の値から設定可能なので省略した。)

jenkins-slave-2

Jenkins マルチ構成プロジェクトの設定

パッケージ プロジェクトを RAD Studio のバージョンごとにビルドを実行するために、Jenkins でマルチ構成プロジェクトを設定する。マトリックスの設定でスレーブを軸に追加して、ビルドしたいラベルを選択しておく。

jenkins-job-1

さらに RAD Studio のバージョンごとに設定を切り替えるために、EnvInject プラグインを利用して必要な環境変数を設定する。

jenkins-job-2

ビルド実行には MSBuild プラグインを利用して、プロジェクト ファイルからビルドするように設定する。

jenkins-job-3

ビルドの実行

必要な設定が完了すれば、スレーブ エージェントを JNLP 経由で起動してマルチ構成プロジェクトのビルド実行を選択すれば、RAD Studio ごとにビルドが実行される。追加で成果物の保存を設定しておけば、ビルド後のバイナリー ファイルを簡単に取得することができる。

Jenkins をパスワード管理なしで使う方法

Jenkins をインターネットから安全にアクセス可能にするために、パスワード管理なしで使えるようにしたので、その方法を紹介する。

この種のサービスをインターネットからアクセス可能にするには、パスワードを保護するために SSL による暗号通信を用いることが多いと思われる。しかし SSL にはサーバー証明書が必要であり、正規に取得したものでない限りブラウザーにより警告表示が出るのが煩わしさを感じるところでもある。

そこで SSL を使わない方法ということで考えたのが、既存の安全な認証機能を利用するということである。これには OpenID プラグインが役立った。

まあ何のことはない。以前 Google Apps が無料だった頃に申し込んであったドメインを使って SSO を設定しただけである。実際に設定してみたらあっけなく機能してしまった。