hypweb.net
XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

TOP » UsersWiki » nao-pon » blog » 2012-06-05 の変更点
  
現: 2012-06-05 (火) 21:41:29 nao-pon ソース
Line 1: Line 1:
 +#navi
 +RIGHT:&rsslink(../);
 +#boxdate
 +* github へシェルスクリプトで自動 push する健忘録 [#v6af4849]
 +RIGHT:&tag(github,プログラミング,シェルスクリプト);
 +
 +** まえおき [#zc22c229]
 +
 +XOOPS Cube Legacy 向けに naaon さん、domifara さんが中心となって製作している xupdate モジュール。
 +
 +xupdate は、ファイル数・サイズ共に大きくなりがちで FTP で上げるのに手間と時間が掛かる XOOPS において、その手間と時間を劇的に軽減してくれる素晴らしいモジュール(拡張機能)です。
 +
 +拙作の HypCommonFunc, HypConf, xpWiki, xelFinder もこの xupdate でとても簡単にインストール・アップデートができるようになっています。
 +特に、インストールに関しては、面倒なディレクトリのパーミッション設定も漏れなく処理してくれるので、これは本当に便利です。
 +
 +この xupdate に対応するために、モジュール情報を記載した簡単な設定ファイルが必要になるのですが、私のモジュールの場合は github に置いてありそこから取得するようになっています。この設定ファイルに、バージョン番号を記載しておくと、バージョンアップ時の情報として表示されるようになっているので記載するようにしたのですが、対象モジュールのバージョンアップをした場合に、忘れずに更新する必要があります。
 +
 +ただ、私はとても忘れっぽい性格なので、きっと忘れるだろうな。 :hammer:
 +
 +ということで、この作業を自動化することにしました。
 +
 +** やっと本題 [#s270f393]
 +
 +該当のモジュールの github へ push した場合に、決められた処理を行わせるために Service hooks を設定します。
 +
 +github のリポジトリの admin ボタンから Service hooks を選択して、WebHook URLs に手元の Web サーバーの hook 用のシェルスクリプト CGI のURL を登録します。
 +
 +:例えば|
 +http://xoops.hypweb.net/path/to/github_hook.cgi
 +
 +こうして置いて、シェルスクリプト CGI の作成です。
 +
 +例えば、HypcommonFunc + HypConf
 +#code(bash){{
 +#!/bin/sh
 +
 +echo "Content-type: text/plain"
 +echo ""
 +
 +cd /path/to/hyp_common
 +VER=`grep -m1 "\$modversion\['version'\] =" xoops_trust_path/modules/hypconf/xoops_version.php|sed 's/[^0-9.]//g'`
 +DVER=`grep -m1 "\$version =" xoops_trust_path/class/hyp_common/version.php|sed 's/[^0-9.]//g'`
 +cd /path/to/xoops_xupdate_store
 +sed -i 's/\(version = "\)[0-9.]*\(" ;hypconf version\)/\1'$VER'\2/' xupdate_modules.ini
 +sed -i 's/\(detailed_version = "\)[0-9.]*\(" ;hypcommon version\)/\1'$DVER'\2/' xupdate_modules.ini
 +git commit xupdate_modules.ini -m "HypConf version $VER"
 +git push origin master
 +}}
 +
 ++ ローカル git のパスが /path/to/hyp_common になっています。
 ++ 7行目で HypConf, 8行目で HypCommonFunc のバージョン番号を取得して変数に入れています。
 ++ xupdate の設定ファイル(xupdate_modules.ini)用のローカル git のパスが /path/to/xoops_xupdate_store になっています。
 ++ 10, 11行目で xupdate_modules.ini に記載されたバージョン番号を書き換えています。
 ++ で、commit して push です。
 +
 +シェルスクリプトはこれで完了です。ただ、これだけでは問題があります。push する時にパスワードを求められて止まってしまうんですね。
 +
 +なので、github への接続を ssh ではなく https 接続にしておき CGI の実行ユーザーの .netrc ファイルに github.com の定義を追加します。&br;
 +※ 安全のために suEXEC を利用して、この CGI 専用のアカウントで CGI を実行できるようにすることをお薦めします。
 + machine github.com
 + login username
 + password pass
 +
 +これで、http://xoops.hypweb.net/path/to/github_hook.cgi へアクセスして問題なければ、github への該当モジュールの push 時に、バージョン番号に変化があれば、自動で xupdate_modules.ini も更新されるようになるわけです。めでたし、めでたし。
 +
 +とまあ、簡単な説明ですがこんな感じです。 :-D
 +
 +** めでたし、のはずでしたが・・・ [#i7deb40a]
 +
 +うまくいくと思っていたのですが、実際には github への push ができなくて、おまけに コミッター名とメールアドレスが user.name, user.email で設定したものが反映されない。(ローカルの(suEXEC)ログイン名になってる)
 +
 +試しに、このシェルスクリプトを cron で回すと、期待した通りに動いて push もできる。
 +
 +悩んだで、試行錯誤した結果 PHP の exec() で sudo -u <ユーザ名> してシェルスクリプトを実行することにしたら上手くいく模様。
 +
 +visudo で、今回使用するユーザーに対して、利用シェルスクリプトを NOPASSWD として設定した。
 +
 +
 +RIGHT:&font(90%){&page_comments;};
 +#navi
  

  • nao-pon/blog/2012-06-05 のバックアップ差分(No. All)
    • 現: 2012-06-05 (火) 21:41:29 nao-pon

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 397, today: 1, yesterday: 0
このページのTopへ
メインメニュー
ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録
最近の更新
オンライン状況
741 人のユーザが現在オンラインです。 (3 人のユーザが UsersWiki を参照しています。)

登録ユーザ: 0
ゲスト: 741

もっと...
サイト情報