秘密鍵を登録する
以下のコマンドでCIツール上でからbitbucketへのアクセスをする(gitコマンドを実行する)ユーザのssh鍵を生成する
(ここではjenkinsユーザを想定)
sudo -u jenkins ssh-keygen
ファイル名とパスフレーズを聞かれるのでファイル名は適当に、パスフレーズは何も入力せずにEnter.
すると以下のようなファイルが作成される
$ sudo -u jenkins cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAA196v2tBAAABAQD1wLrGbLc3AhF9Ch02cF7xDN4HZlVkmmbeEm7ayEHMFhMDe5zqd/8cc00G9bNdlpaVK25EIc/edzTNijgB/L1sSN1N48vUtXaLSerOQFvoeR1MevjRKYkedSAHITWc1Xeb7UKcebyK/ONshIO8mhT7dIqIvfvLigcAq5+oSH6oaoF4+FFBB2jnrAAAAsYGQiNk/GRAqnCsDnsxJxwKk/unU7uzjTHinCGfEeaCtRz4iDOsn9ox42oVFvS6C7JEw42Zkx2x3pZHPTluQiLf9jyddSyW3oMgvSVi+2wRE+dRKIlcl/5bqH6v4zXpWV/c3L6gGGYQ9p27p8iMMR4Kdqhz jenkins@ci-server
privateリポジトリにssh公開鍵を登録
以下のURLにアクセスするとdeploy鍵が出来るため、ここに先ほど作成した公開鍵(ここではid_rsa.pub)の内容を登録する。
Labelは判別しやすい好きな名前、keyのフィールドは スペースに注意して 先ほどの内容を貼付ける
(言語設定などによって項目名は違う可能性あるので適宜読みかえること)
CIツールにgitレポジトリを設定する
httpsのアドレスではなく、git@~を設定する
git@bitbucket.org:accountname/reponame.git
status code:128でエラーが出る場合(jenkins)
ソースコード管理システムでGitを選択して、正しいURIを設定しても以下のようなエラーが表示される場合がある
Failed to connect to repository : Command "git ls-remote -h git@bitbucket.org:accountname/reponame.git HEAD" returned status code 128:
stdout:
stderr: fatal: The remote end hung up unexpectedly
このエラーが出る場合、known_hostsに登録されていないためにエラーになるケースがある。
その場合は、CIツールの実行ユーザで一度適当なgitコマンドを実行してみる。
(cloneしてきたリポジトリはすぐに消して問題ない
sudo -u jenkins git clone git@bitbucket.org:accountname/reponame.git
Cloning into reponame...
The authenticity of host 'bitbucket.org (131.103.20.168)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? *yes*
ポート22が使えない場合
インフラの都合上FW外へのポート22がブロックされている場合、
bitbucketはssh over httpsをサポートしているのでURIを以下の形式で設定する
ssh://git@altssh.bitbucket.org:443/accountname/reponame/