Jenkinsの導入
銀鷹です。
今回は、Debian7へのJenkinsの導入です。
基本的な手順はhttp://qiita.com/soramugi/items/4b91222caaa67fb460f5を参考にしました。
加えて、前回インストールしたGitLabとの連携も行います。
環境
OS: Debian7
Jenkins + GitLab6.6。
なお、今回はJenkinsとGitLabは同じサーバで動いています。
インストール
Jenkinsがリポジトリを公開してくれているので、こいつを使います。参考
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
インストールは以上で完了。非常に単純です。
認証の設定
デフォルトでは、Jenkinsさんは非常にオープンな人なので、誰のお仕事でも受けてしまう模様。
なので、ちゃんと設定をします。
詳細は、こちらに丁寧にまとまっているので、こちらを参照して下さい。
GitLabとの連携
JenkinsからGitLabへのアクセス
まずは、jenkinsユーザでGitLabへアクセス出来るようにします。
# 鍵の作成 sudo su jenkins # ssh-keygenの設定はご自由に。 ssh-keygen -t rsa -b 2048
ここで作成した、公開鍵をGitLabに登録。
ユーザは、Jenkinsでビルドさせたいリポジトリにアクセス出来るユーザならだれでも良いはず。
GitLabのProfile settings
-> SSH
-> Add SSH Key
から登録。
登録したら、以下のコマンドでちゃんと入れるかを確認。
# もし、ポートを変えてるなら-pオプションでポートも指定して下さい。 ssh git@<GitLabのIPアドレスorドメイン> -i <秘密鍵> [-p <SSHのポート>] # 以下の様な結果が帰ってくればOK PTY allocation request failed on channel 0 Welcome to GitLab, <ユーザ名>! Connection to <GitLabのIPアドレス> closed.
ここまでがOKなら、残りはJenkinsへの設定です。
gitlab-hook-pluginのインストールと設定
まずは、Jenkinsのトップページから、
Jenkinsの管理
-> プラグインの管理
へ進み、
利用可能
のタブを選択して、右上のフィルタに「gitlab」と入力。
候補の中にある、「Gitlab Hook Plugin」を選択してインストール。
以上でインストールは完了。
あとは、実際にジョブを作成します。
トップページから、新規ジョブ作成
-> フリースタイル・プロジェクトのビルド
を選択。
設定のところで、ソースコード管理
の中にあるGit
を選択。
GitLabからリポジトリをクローンする時のURLをRepository URL
へ、
Credentials
以下のAdd
を押して、Kind
はSSHユーザ名と秘密鍵
を選択、
ユーザ名
に「git」、秘密鍵
はJenkinsマスター上のファイルから
を選択して、
秘密鍵の場所をフルパスで指定。
もし、鍵にパスワードがあるなら、下の高度な設定
を押してパスフレーズ
にパスワードを入力。
あとは、リポジトリ・ブラウザ
で「gitlab」を選択、
URL
にGitLab上のプロジェクトのURLを、Version
には「6.6」を入れて完了。
残りの設定を適当に埋めて、保存で完了です。
ここまで出来たら、Jenkinsのトップページへ戻って、
作ったプロジェクトの右端にあるアイコンを押して、為にしにビルドしてみましょう。
ビルドが成功すれば設定はOKです。
hookの設定
ここまで出来たら、後はGitLab側で、Pushされた時に、自動的にビルドが走るようにします。
GitLabのプロジェクトのSettings
->Web Hooks
を選択。
URL
に「http://<JenkinsサーバのIPアドレスorドメイン>/gitlab/build_now」を入力
Trigger
は「Push events」でOKです。
入力が終わったらAdd Web Hook
をクリック。
最後に、下に追加された内容を確認した上で、Test Hook
をクリック。
Jenkins側でビルドがされているか確認して下さい。
ちゃんとビルドが走っていれば次から、Pushする度にビルドが走ります。
これで、何時でも勝手にJenkinsおじさんがお仕事してくれます。
以上で、GitLabとJenkinsの連携は完了です。
基本的には、
- JenkinsユーザでGitLabへアクセスを可能にする
- GitLab-Hook-Pluginを入れる
- JenkinsのジョブでGitからファイルを取得してビルドを行うようにする
- GitLab側でWeb Hooksを設定する
の4点が出来ていれば動くと思います。
次回は、JenkinsとDockerの連携を扱います。
これが出来るようになれば、わざわざJenkinsが動くサーバに環境を入れなくても、
手元で作ったDockerコンテナでビルドが実行できるので、お手軽です。
今回は以上になります。