昨日は Jenkins を別のサーバーに移すのに時間を取られて夜更かしをしてしまった。JNLP でのスレーブ起動がなかなかうまく動くようにならなかったのが敗因。
カテゴリー: プログラミング
RAD Studio のパッケージ プロジェクトを Jenkins でビルドしてみた
RAD Studio のパッケージ プロジェクトを Jenkins を使ってバージョン別にバッチ ビルドするようにしてみたので記載する。
Jenkins スレーブ ノードの設定
RAD Studio を使ってビルドを実行するために、まず RAD Studio をインストールした PC を Jenkins のスレーブ ノードとして設定する。パッケージ プロジェクトを RAD Studio のバージョンごとにビルドを実行するために、ここで RAD Studio の各バージョンを識別するラベルを列挙しておく。
今回はビルド実行時に手動でスレーブを起動するので、起動方法を JNLP 経由とし、また可用性も必要時だけオンラインにする設定とする。(注: Windows のサービスとして登録しておけば常時オンラインにすることもできるのだが、RAD Studio のライセンス上「指名ユーザー」だけが使用しなければならないことになっているので、手動で起動することにした。)
さらに Jenkins プロジェクトでスレーブ ノードの環境を設定するために、環境変数 BDS と BDSCOMMONDIR のバージョンごとの値を設定しておく。(注: BDSINCLUDE は BDS の値から設定可能なので省略した。)
Jenkins マルチ構成プロジェクトの設定
パッケージ プロジェクトを RAD Studio のバージョンごとにビルドを実行するために、Jenkins でマルチ構成プロジェクトを設定する。マトリックスの設定でスレーブを軸に追加して、ビルドしたいラベルを選択しておく。
さらに RAD Studio のバージョンごとに設定を切り替えるために、EnvInject プラグインを利用して必要な環境変数を設定する。
ビルド実行には MSBuild プラグインを利用して、プロジェクト ファイルからビルドするように設定する。
ビルドの実行
必要な設定が完了すれば、スレーブ エージェントを JNLP 経由で起動してマルチ構成プロジェクトのビルド実行を選択すれば、RAD Studio ごとにビルドが実行される。追加で成果物の保存を設定しておけば、ビルド後のバイナリー ファイルを簡単に取得することができる。
Jenkins をパスワード管理なしで使う方法
Jenkins をインターネットから安全にアクセス可能にするために、パスワード管理なしで使えるようにしたので、その方法を紹介する。
この種のサービスをインターネットからアクセス可能にするには、パスワードを保護するために SSL による暗号通信を用いることが多いと思われる。しかし SSL にはサーバー証明書が必要であり、正規に取得したものでない限りブラウザーにより警告表示が出るのが煩わしさを感じるところでもある。
そこで SSL を使わない方法ということで考えたのが、既存の安全な認証機能を利用するということである。これには OpenID プラグインが役立った。
まあ何のことはない。以前 Google Apps が無料だった頃に申し込んであったドメインを使って SSO を設定しただけである。実際に設定してみたらあっけなく機能してしまった。
UnicodeとJava
Javaのchar型は最初から長さ16ビットでUnicodeということで, 以前ならマルチバイト文字を考えなくても文字処理ができるということで, ほかのchar型が8ビットの言語と違って楽ができると思ってたんだけど, 最近はUnicodeにもサロゲートペアとかあってchar二つで1文字とかあるから結局また面倒な世界に逆戻りしてしまってたりする。
Win32もwchar_t型は16ビットのはずだから, 手間としては同じなんだろうけど, 所詮すべての文字を16ビットで表現するというのが幻想だったというわけで, wchar_tが32ビットのシステムに戻りたいね。
XE 向けに行われた C++Builder の変更点 – RAD Studio
C++Builder XEが来たので、これまで作っていたCOMプロジェクトをATLなしに書き直す予定にしてるんだけど、時間が取れないよー。困ったー。
リンク: XE 向けに行われた C Builder の変更点 – RAD Studio.
[更新] タイトル中の++を復元。
SAC: The Simple API for CSS
JavaのSSL鍵ペアをOpenSSLで使う方法
Java用に生成したSSL鍵ペア (証明書を含む) をOpenSSLでも使う方法が判明したので、メモしておく。
keytool
の-importkeystoreコマンドで、新しいPKCS12キーストアに単一エントリをコピーする。keytool -importkeystore -srckeystore keystore -destkeystore key.p12 -deststoretype pkcs12 -srcalias alias
openssl pkcs12
コマンドでPEM形式で出力する。openssl pkcs12 -in key.p12 -out key.pem
リンク: keytool – 鍵と証明書の管理ツール.
訛りのない Java 言語を話す
ここんとこ嘘だと思うんだけどなあ。釣り?
リンク: 訛りのない Java 言語を話す.
C++ では private のスコープをクラスではなくオブジェクトに設定しなければならないため、こうする必要があります。それはすなわち、C++ では、同じクラスのオブジェクトは互いの private メンバー変数を見られないということです。
「逆参照」という用語に
どうにも違和感を感じるんだけど、自分がおかしいのかしらね。
これは “dereference” の訳語のつもりなんだろうけど、「逆」と書かれるとポインター参照を逆にたどってる (参照先からポインターに戻る) ように見えてしまって、まったく違うものを連想してしまうよ。
「参照の解消」とか「参照の解決」とするのが意味的には正しいと思うんだけど、もっとしっくりする訳語はないもんかね。ね?
Mozilla Firefox 3.6以降でJavaを使うには
Java 6 Update 10以降 (要するにNew Plugin) が必要とのこと。何でも従来のプラグインで使っていたインターフェース (OJI) が取っ払われたためらしい。何というか、汎用のNPRuntimeインターフェースだけで十分になったわけね。
その前に、Sunのフォーラムでは、New Pluginでは今使っているアプレットが動かんとかで、古いプラグインを使わせたい (使いたいではなく) という声が多いんだけど、この人たち、どうするのかねえ。Firefox 3.6以降はサポートしないなんてことになるのかしら。