XOOPS Cube Legacy 向けに naaon さん、domifara さんが中心となって製作している xupdate モジュール。
xupdate は、ファイル数・サイズ共に大きくなりがちで FTP で上げるのに手間と時間が掛かる XOOPS において、その手間と時間を劇的に軽減してくれる素晴らしいモジュール(拡張機能)です。
拙作の HypCommonFunc, HypConf, xpWiki, xelFinder もこの xupdate でとても簡単にインストール・アップデートができるようになっています。
特に、インストールに関しては、面倒なディレクトリのパーミッション設定も漏れなく処理してくれるので、これは本当に便利です。
この xupdate に対応するために、モジュール情報を記載した簡単な設定ファイルが必要になるのですが、私のモジュールの場合は github に置いてありそこから取得するようになっています。この設定ファイルに、バージョン番号を記載しておくと、バージョンアップ時の情報として表示されるようになっているので記載するようにしたのですが、対象モジュールのバージョンアップをした場合に、忘れずに更新する必要があります。
ただ、私はとても忘れっぽい性格なので、きっと忘れるだろうな。
ということで、この作業を自動化することにしました。
該当のモジュールの github へ push した場合に、決められた処理を行わせるために Service hooks を設定します。
github のリポジトリの admin ボタンから Service hooks を選択して、WebHook URLs に手元の Web サーバーの hook 用のシェルスクリプト CGI のURL を登録します。
こうして置いて、シェルスクリプト CGI の作成です。
例えば、HypcommonFunc + HypConf
1
2
3
4
5
6
7
8
9
10
11
12
13
| - ! |
|
シェルスクリプトはこれで完了です。ただ、これだけでは問題があります。push する時にパスワードを求められて止まってしまうんですね。
なので、github への接続を ssh ではなく https 接続にしておき CGI の実行ユーザーの .netrc ファイルに github.com の定義を追加します。
※ 安全のために suEXEC を利用して、この CGI 専用のアカウントで CGI を実行できるようにすることをお薦めします。
machine github.com login username password pass
これで、http://xoops.hypweb.net/path/to/github_hook.cgi へアクセスして問題なければ、github への該当モジュールの push 時に、バージョン番号に変化があれば、自動で xupdate_modules.ini も更新されるようになるわけです。めでたし、めでたし。
とまあ、簡単な説明ですがこんな感じです。
うまくいくと思っていたのですが、実際には github への push ができなくて、おまけに コミッター名とメールアドレスが user.name, user.email で設定したものが反映されない。(ローカルの(suEXEC)ログイン名になってる)
試しに、このシェルスクリプトを cron で回すと、期待した通りに動いて push もできる。
悩んだで、試行錯誤した結果 PHP の exec() で sudo -u <ユーザ名> してシェルスクリプトを実行することにしたら上手くいく模様。
visudo で、今回使用するユーザーに対して、利用シェルスクリプトを NOPASSWD として設定した。
ぺージ情報 | |
---|---|
ぺージ名 : | nao-pon/blog/2012-06-05 |
ページ別名 : | 未設定 |
ページオーナー : | nao-pon |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | なし |
ユーザー : | ゲスト |