相変わらず一人前のサーバ管理者目指して修行中の馬場です。
今回練習がてら、自宅サーバでSVN環境を構築したのですが、コミット時に自動でdeploy(svn update
)する処理が上手くいかずに苦労しました。
症状
post-commitフックでsvn u
pするだけなのですが、リポジトリの所有者とコミット者が違う場合、deploy用のディレクトリへの書き込み権限が無くて失敗します。
(さすがにdeploy用フォルダを777にするのは無しという前提です)
例
- リポジトリの所有者はbps(bpsグループ)で、コミット者はbaba(bpsグループ)の場合
$vi /home/bps/hoge-project/repos/hooks/post-commit #↓だとPermission Deniedで失敗するので svn up /home/bps/hoge-project/deployed #↓このようにしないといけない sudo -u bps svn up /home/bps/hoge-project/deployed
しかし、これだとsudo
の際にパスワードを求められて、Eclipse等からコミットした場合に入力待ちで永久に処理が完了しません。
解決方法
そこで、この処理だけパスワードなしでsudo
できるようにしないといけないようです。
/etc/sudoersファイルを編集して設定します。専用のvisudo
コマンドを使うと安全なようです。
$visudo #以下の記述を追加 %bps ALL=(bps)NOPASSWORD:/home/bps/hoge-project/repos/hooks/post-commit
これでようやくコミット後にsvn up
が実行されました。
システム管理部の先輩が目をつぶっても出来るような作業に、半日近くかかってしまいました。
もっと修行します。