root権のない一般ユーザーでも開発環境でCI(Jenkins/PHPUnit/Phing)してみたい (前編)

JenkinsやPHPUnitやPhingの導入についてのありがたいまとめはいっぱいあります。

世の中のJenkins/PHPUnitのインストール情報はroot権ある人用 (当たり前)

レガシーな開発環境にはPHPUnitなんぞ入ってなかったりします。
そのわりにポートはしっかり閉じられててJenkins起動しても8080で接続できないとか。

  • 仕方ないのでローカルのWindowsPCにJenkinsとか入れて、レガシーコードの方をWindowsPCに落としてきたけどまともに動かない
  • しょうがないのでサンプルスクリプトでちょこっといじって終了

一般ユーザー権だけでJenkins/PHPUnit/Phingしたい

でも実際に業務で触ってるものに対してPHPUnitでテスト書いて、JenkinsとPhingでCIしてみたい。
sudoできる人たちに「努力の方向が間違ってる」といわれそうですが。
でもいいんです。持つものには持たざるものの気持ちなど分からんのです。

ということで以下、一般ユーザーでJenkins/Phing/PHPUnitでCIする説明。

Jenkins インストール

落としてきて起動する。簡単。
$ mkdir jenkins
$ cd jenkins
$ wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
$ java -jar jenkins.war --prefix=/jenkins > jenkins.log 2>&1 &
# もしくは nohup java -jar jenkins.war --prefix=/jenkins > jenkins.log 2>&1
確認
$ wget http://localhost:8080/jenkins/ -O jenkins.html

これでちゃんとJenkinsダッシュボードのHTMLが取れてればOK。

ブラウザからアクセス

http://hoge.example.com:8080/jenkins/ (開発環境ドメインhoge.example.comの場合)
これでJenkinsさんが出てくればOK。出ない場合は↓に続く。

開発環境にポート8080でアクセスできない場合

jenkinsは動いてるのにローカルPCのブラウザからのアクセスが通らない。
ポート閉じられてる場合の対応。

方法1 ポートかえる

あいているポートがあるならJenkins起動時のオプションに --httpPort=XX つけてそっちにアクセスすればいいかも。
やったことない。

方法2 Apacheを通してアクセスする

設定をいじれる場合(.htaccess不可)に限りますが、プロキシしてあげればいけます。

LoadModule proxy_module modules/mod_proxy.so

ProxyPass /jenkins http://localhost:8080/jenkins
ProxyPassReverse /jenkins http://localhost:8080/jenkins

http://hoge.example.com/jenkins/ にアクセスすればご対面。

方法3 SOCKS Proxyする

個人用のhttpd.confが割り当てられてたりwebサーバー再起動したりできるケースは少ないと思うのでこちらで。
ブラウザからのアクセスをSSHでプロキシしてもらう方法。

  • まずはPuttyの設定
    • Puttyを立ち上げて開発環境に接続する設定を選択して「読込」
    • 接続>SSH>トンネル
    • 「源ポート」に「8080」
    • 「ダイナミック」選択
    • 追加ボタン

と設定して開発環境に接続します。立ち上がったターミナルはそのまま。

  • ブラウザの設定 (Firefoxの場合)
    • ツール>オプション>詳細>ネットワーク>接続設定
    • 手動でプロキシを設定する
    • SOCKSホストにlocalhost、ポート8080

この状態で、
http://localhost:8080/jenkins にブラウザからアクセスすればご対面。


次回pearでのphpunitとphingいんすとーりんぐ