Pages

2013年7月30日火曜日

Jenkins+Githubでの自動デプロイ設定

Jenkinsの管理画面は日本語だとわかりづらいので英語設定で。

◎自動デプロイ設定までの流れ
  1. ユーザー作成
  2. ユーザー権限
  3. Github連携用プラグインのインストール/設定
  4. ジョブの作成
  5. ジョブへのユーザー追加
  6. SSH鍵の作成
  7. Jenkins <-> Github連携

■ユーザーの作成
  1. [Manage Jenkins] -> [Configure Global Security]
  2. "Enable security"にチェックを入れると詳細設定が開くので
    1. Security RealmのJenkins's own user databaseを選択
    2. "Allow users to sign up"をチェック
    3. Authorizationの"Project-based Matrix Authorization Strategy"を選択
    4. "admin"と"github"の2つのユーザーを作成("Add")
      1. adminユーザーにはすべての権限を付ける(表右の全チェックアイコンをクリック)
      2. githubユーザーにはOverallのReadのみ付ける
    5. "Save"ボタンで設定保存
"Save"をクリックするとログアウトし、ログイン画面へ飛ばされるので
"Create an account"からログインアカウントを作成する。
作成したアカウントでログイン後、先ほど作成したadminとgithubユーザーのログインアカウントを作成
■ログインアカウントの作成
  1. [Manage Jenkins] -> [Manage Users]
  2. "Create User"からadminとgithubユーザー作成
■Github連携用プラグインのインストール/設定
  1. [Manage Jenkins] -> [Manage Plugins]
  2. "Available"タブをクリック
  3. 次のプラグインをインストール
    • Publish Over SSH Plugin
    • GitHub Plugin
    • GitHub API Plugin
    • Git Plugin
■ジョブの作成
  1. TOPの"create new jobs"からジョブ作成画面へ
  2. ジョブを作成
    1. ジョブ名(プロジェクト名)を入力
    2. "Build a free-style software project"を選択し、"OK"ボタンを押下
■ジョブへのユーザー追加
  1. TOPから先ほど作成したジョブをクリック
  2. メニューの"Configure"をクリックして設定画面へ
  3. "Enable project-based security"をチェック
  4. "admin"と"github"の2つのユーザーを作成("Add")
    1. adminユーザーにはすべての権限を付ける(表右の全チェックアイコンをクリック)
    2. githubユーザーにはJobのReadとBuildを付ける
■SSH鍵の作成
  1. $ cd /var/lib/jenkins/
  2. jenkinsユーザーでssh設定ディレクトリ作成
    $ sudo -u jenkins mkdir .ssh && sudo chmod 700 .ssh/
  3. 鍵作成のため、rootになる(標準では"jenkins"のシェルに入れないため)。
  4. ssh設定ディレクトリへ移動し、鍵作成
    # cd .ssh/ && ssh-keygen -t rsa
    1. 鍵の保存場所を下記のように指定
      Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
  5. 鍵の権限をjenkinsに変更
    # chown jenkins:jenkins *
  6. 鍵の確認/Githubへの登録
    1. 鍵の確認
      # cat /var/lib/jenkins/.ssh/id_rsa.pub
    2. Githubの"Deoploy Keys"から確認した鍵を登録
■Jenkins <-> Github連携
Jenkinsサーバー側
  1. Gitからソースを持ってくるディレクトリへ移動
    $ cd /var/lib/jenkins/
  2. jenkinsユーザーでGithubからチェックアウト出来るか確認
    $ sudo -u jenkins git clone git@github.com:hoge/hoge.git~/.ssh/configに記述した場合はgithub.com部分をそのHost名に変更する
  3. Jenkins管理画面のジョブでGit設定
    1. 対象ジョブの"Configure"から、Source Code ManagementのGitを選択
    2. Repository URLにGithubのssh clone urlを入力
Github側
  1. 対象プロジェクトの[Service Hooks]からJenkins (Git plugin)を選択
  2. Jenkins Urlに対象ジョブの"Build Now"リンクを貼り付けて"Update"

■おまけ(Submoduleを使っている場合)
$ sudo -u jenkins git submodule init
Submodule 'app/Plugin/Common' (https://github.com/hoge/submodule.git) registered for path 'app/Plugin/Common'

$ sudo -u jenkins git submodule update

git submodule updateがバージョンが古くて動かなかったので(https://help.github.com/articles/https-cloning-errors)
下記を参考に手動で最新版をインストール
http://takeshiyako.blogspot.jp/2013/01/centos-62git.html

0 件のコメント:

コメントを投稿

 

Life

Tech

Play