StashとRedmineを連携させるの続き
sshキーペアを作成して、登録する
$ ssh-keygen -t rsa git_key
- 公開鍵を登録します。
$ cat ~/.ssh/git_key.pub ssh-rsa AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAA== user@host
Redmineサーバでスクリプトが動作するときに作成した秘密鍵が使われるように設定する
- ユーザ毎にsshのデフォルト設定を作れます。
$ vi ~/.ssh/config Host git.example.com HostName git.example.com IdentityFile ~/.ssh/git_key User git
- 初回はauthorized_keysに登録するか聞いてくるのでsshでアクセスしてみましょう。
Hook Scriptを修正
- git cloneしているところをhttpからsshに変えます。
#!/bin/bash ( PROJECT=$1 REPO_NAME="$STASH_REPO_NAME.git" REPO_DIR="/var/git/$PROJECT/$STASH_REPO_NAME.git" ssh -i /home/stash/.ssh/git_key -l ci -t -t redmine.example.com <<EOF if [ ! -d /var/git/$PROJECT ] ; then mkdir /var/git/$PROJECT cd /var/git/$PROJECT git clone --mirror ssh://git@git.example.com:7999/$PROJECT/$REPO_NAME fi cd $REPO_DIR git fetch --all exit EOF ) | tee /tmp/git-mirror.log
これで非公開リポジトリにも対応出来ました。