読者です 読者をやめる 読者になる 読者になる

ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

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。