【Jenkinsに入門してみた】リポジトリへアクセスするための設定
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
前回、Gitリポジトリを作成しましたが、JenkinsがGitリポジトリを参照するためには、いくつかの手順が必要になります(これを調べるのに、かなり悪戦苦闘してしまいました…)。
まず、Jenkinsの管理画面上で「新しいジョブ」のリンクをクリックします。
遷移先の画面で、ビルド用のジョブの名前と種類を設定します。ここでは、”hello_job”という名前の、「フリースタイル・プロジェクトのビルド」を作成してみます。
遷移先の画面では、プロジェクトの説明、関連付けるSCM、ビルドのトリガー、ビルド時の実行コマンド等の詳細な設定を行います。ひとまず、「ソースコード管理」は”Git”を選択し、リポジトリのURLに以下のように設定します。
1 |
ssh://root@<IPアドレス>/var/lib/git/testrepo/ |
「認証情報」は、リポジトリにアクセスするための認証情報です。”追加”->”Jenkins”をクリックし、ポップアップ画面上で、SSHでアクセスするためのユーザーIDとパスワードを設定します。
「ソースコード管理」の画面に戻ったら、先ほど作成した認証情報を選択します。これで、リポジトリURL、認証情報いずれも正しく設定できていますが、”Host key verification failed”のようなエラーが表示され、リポジトリにアクセスできません。これは、Jenkinsを動作させているユーザー(jenkins)が、自サーバへsshでアクセスするためのホスト鍵が未登録であることが原因です。
この問題を解決するためには、jenkinsユーザーとしてサーバへログインし、ホスト鍵をknown_hostsに登録する必要があります。以下のように、suでjenkinsユーザーになったうえで、自サーバへsshでログインします(ここでは、便宜上rootでログインしています)。
1 2 3 4 5 6 7 8 |
# su -s /bin/bash jenkins $ ssh root@192.168.xxx.xxx The authenticity of host '(省略)' can't be established. ECDSA key fingerprint is (省略) Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '(省略)' (ECDSA) to the list of known hosts. root@192.168.xxx.xxx's password: (パスワードを入力) # exit |
これで、自サーバのホスト鍵がjenkinsユーザーのknown_hostsに登録されました。ただし、これでもまだ不十分です。rootユーザーのauthorized_keysに、jenkinsユーザーの公開鍵を登録する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): (何も入力せずEnter) Enter passphrase (empty for no passphrase): (何も入力せずEnter) Enter same passphrase again: (何も入力せずEnter) Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa. Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub. (以下省略) $ cat /var/lib/jenkins/.ssh/id_rsa.pub ssh-rsa AAAA(長いので省略)kTkV jenkins@nodeXXX $ exit # vi /root/.ssh/authorized_keys (先ほどcatしたjenkinsユーザーの公開鍵を貼り付ける) |
これで、晴れてJenkinsがGitリポジトリにアクセスできるようになりました。
今回はここまでです。次回は、Jenkins上でビルド用のジョブを登録し、実際にジョブを動かしてビルドを行ってみたいと思います。