2012年10月1日月曜日

gut push でメールをとばす

git push でリポジトリが更新されたときに、commitの内容をメールで送信する方法。


ディストリビューションにもよるが、メール送信スクリプトは
/usr/share/git-core/contrib/hooks/post-receive-email
に普通インストールされていると思うので、これをそのまま使うこととする。

送信には sendmail を使用しているので、まずは sendmail ができるようにならないといけない。


MTA の設定はあまり詳しくないが、、、
とりあえずUbuntu でやってみた。

$ sudo apt-get install postfix
でインストール。
途中で選択肢が出てくるので、「インターネットサイト」を選択。

自宅のマシン場合、特に設定なしでも、そのまま使えた。
以下でちゃんとメールが届けばOK。

$ sendmail my.address@gmail.com
To: my.address@gmail.com
From: my.address@gmail.com
Subject: test
test
.


会社の場合、ファイアウォールの問題で、このままだと配送できなかったので、relayhostを設定。

/etc/postfix/main.cf を編集し、
relayhost のところに中継サーバーのIPアドレスを指定する。
IPアドレスで指定しないといけないみたいなので、
会社からこれを使え、と言われているSMTPサーバ名から nslookup で引く。

$ nslookup my.office.smtp.server
で Address : xxx.yyy.zzz.www
みたいにIPアドレスが返ってくるので、
relayhost = xxx.yyy.zzz.www
と指定するとOK。



sendmail が動くようになったので、続いて git の設定。

/usr/share/git-core/contrib/hooks/post-receive-email
にやり方が全部書いてあるので、この通りやるだけですが。。

post-receive-email に実行権限を与える
$ sudo chmod a+x /usr/share/git-core/contrib/hooks/post-receive-email

設定したいgit リポジトリへ移動
$ cd  /my/git/repogitory.git/hooks

post-receive-email へ post-receive という名前でシンボリックリンクをはる。
$ ln -s /usr/share/git-core/contrib/hooks/post-receive-email post-receive

送りつけたい宛先を config に設定
$ git config hooks.mailinglist "address@you.want.to.send"

とりあえずこれで送信されます。

あと、お好みでやっておく設定

メールのタイトルが 「UNNAMED PROJECT」になっているので、description にプロジェクト名を記載。

送信元アドレス指定
$ git config hooks.envelopesender do_not_reply_this@foo.org

メール最大行数を指定
$ git config hooks.emailmaxlines 500


0 件のコメント:

コメントを投稿