cron から自動で git push する

SSH プロトコルを利用して git のリモートリポジトリを操作している場合ですが、cron から自動で git push したい時、ssh の秘密鍵を明示的に指定して git push する必要があります。
その実現方法のメモになります。


1)下記のような SSH のラッパースクリプト(git-ssh.sh)を作成します。

#!/bin/sh
exec ssh -oIdentityFile=/path/to/.ssh/id_rsa "$@"


2)下記のように GIT_SSH 環境変数に1で作ったスクリプトを指定します。

% export GIT_SSH=/path/to/git-ssh.sh


上記を行うことで、/path/to/.ssh/id_rsa の秘密鍵を利用して git push が実行されます。


具体的な cron は下記のようになります。

1 1 * * * <USER> cd /path/to/projects/proj && git add -A > /dev/null 2>&1 ; git commit -m "自動バックアップ (`date`)" > /dev/null 2>&1 && export GIT_SSH=/path/to/.ssh/git-ssh.sh ; git push