svnをバッチジョブから実行するときの認証を解決する

どうにか解決したのでメモ。

やりたかったこと。

  • SVNの更新やコミット処理を記述したバッチファイルをジョブから実行する
  • その時、バッチファイルに認証情報(ユーザID、パスワード)は書きたくない
  • 【制約】Jenkinsは都合により利用できない
Administratorアカウントで svn update を実行すると、初めてアクセスする際に認証の入力を求められて、さらにその認証を permanently に覚えておくように指定すると次からは認証を要求されないようになる。でもこれは Administratorアカウントが、当該の svn サーバの認証情報なり証明書なりを記憶しただけで、バッチジョブを実行する SYSTEM アカウントが認証を免除されるわけではない。

いろいろ試したところ、次のように対応すれば、batファイルに認証情報を書かなくてもバッチジョブからSVNを実行できるようになった。
  1. AdministratorでWindowsログインし、svn コマンドを使って当該のサイトにアクセス
  2. 初回は認証を求められるので入力。その際にサーバの証明書を保持しておくか尋ねられるので、「p」(Permanently:恒久に覚える)を指定
  3. すると、 C:/User/Administrator/AppData/Roaming/Subversion のauthフォルダにファイルが生成され、証明書が格納される
  4. このauthフォルダを、 C:/Windows/System32/config/systemprofile/AppData/Roaming/Subversion/ にコピー
  5. batファイルのSVNコマンドに、一回だけ --username HOGE --password HOGE --quiet を書き込み、タスクスケジューラからbatファイルを実行させる
    (これで、この認証情報を覚えておいてくれる)
  6. batファイルから上記の認証情報を削除
  7. 記憶された認証情報が使われるので、batファイルに認証を書かなくてもバッチジョブから svn update等ができるようになる。

コメント

このブログの人気の投稿

Windows Update で Cisco Anyconnect が繋がらなくなる。(Windows8.1)

Windows8.1 から Cisco AnyConnectを使う