JenkinsとGitサーバーを連携してビルド環境を構築する。
やりたい事
独自のjenkinsサーバーとgitサーバー(それぞれ別サーバー)を連携してビルド環境を構築する。
環境
CentOS 6.6 jenkins-2.25 git 2.10.0
※事前にそれぞれのサーバーにgitがインストールされている必要あり
秘密鍵/公開鍵の作成配置
クライアント(jenkins)側での作業
※jenkinsを起動しているユーザー(ここではroot)で実行
opensshがインストールされている事。
鍵ペア作成
ssh-keygen -t rsa
複数ユーザーが利用する事を想定して鍵の名前を指定する。
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/user_rsa
鍵が作成されている事を確認
ls ~/.ssh/ user_rsa user_rsa.pub
gitサーバーへ転送
scp ~/.ssh/user_rsa.pub username@192.168.10.112:~/.ssh/
gitサーバー側での作業
※jenkinsからのgitでssh接続するユーザーで実行
authorized_keysに登録
cd ~/.ssh/ touch authorized_keys cat user_rsa.pub >> authorized_keys rm user_rsa.pub
権限付与
chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys
jenkinsサーバーから鍵方式で接続できる事を確認
鍵生成時に入力したパスワードでログインできればOK
ssh -i /root/.ssh/user_rsa username@192.168.10.112 Enter passphrase for key '/root/.ssh/user_rsa':
Jenkins設定
jenkinsにgitプラグインをインストールする。
[Jenkinsの管理]→[プラグインの管理]→[利用可能]
Git pluginにチェックを入れて[再起動せずにインストール]押下。
インストール成功すればOK。
プロジェクト作成、設定
[新規ジョブ作成]
[Enter an item name]に適当な名前を入力。
[ソースコード管理]でGitを選択。
[Repository URL]にリポジトリURLを入力
例)
ssh://username@192.168.10.112/var/git-repo/hoge_project.git
[Credentials]の追加 - Jenkinsをクリックし。
Domain ... グローバルドメイン
種類 ... SSHユーザー名と秘密鍵
スコープ ... グローバル
ユーザー名 ... 任意
秘密鍵 ... 直接入力、「/root/.ssh/user_rsa」
パスワード ... 任意
名前 ... 分かりやすい名前を任意で
設定した情報をCredentialsで選択。
※設定した情報はJenkinsダッシュボードの[認証情報]より確認・編集可能
設定後、赤文字エラーメッセージが表示されなければOK。
以下のようなエラーが表示される場合は、何かしら設定ミスの可能背あり。要調査
Failed to connect to repository : Command "git ls-remote -h ssh://username@192.168.10.112/var/git-repo/hoge_project.git HEAD" returned status code 128: stdout: stderr: Host key verification failed. fatal: The remote end hung up unexpectedly
[ビルドトリガ] - [定期的に実行]のスケジュール
H/15 * * * *
今回は15分おきにビルド設定とする
[ビルド環境]
以下にチェックつける
コンソール出力にタイムスタンプを追加する
ビルドしてみる
プロジェクトのダッシュボードより[ビルド実行]をクリック。
ビルド完了後、左下ビルド履歴の最新のビルド結果リンクをクリック。
[コンソール出力]を確認し、エラーが発生して無ければOK。