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

2013年7月29日月曜日

CentOS6.3へのJenkinsのインストール

■リポジトリの取得と公開鍵のインポート
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
■JDKのインストールOpenJDKをインストールするため、まず取得出来るバージョンの確認
$ yum list \*java-1\* | grep open

最新版をインストール
$ sudo yum install java-1.7.0-openjdk
$ sudo yum install java-1.7.0-openjdk-devel.x86_64
Installed:
java-1.7.0-openjdk.x86_64 1:1.7.0.9-2.3.7.1.el6_3
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.9-2.3.7.1.el6_3
 
■Jenkinsのインストール
$ sudo yum install jenkins
Installed:
jenkins.noarch 0:1.514-1.1
■Jenkinsの設定(下記の2項目)
$ sudo vi /etc/sysconfig/jenkins
JENKINS_PORT="8080"
JENKINS_ARGS="––prefix=/jenkins"

■Apacheの設定
こんな感じ
$ cat /etc/httpd/conf.d/jenkins.conf
<VirtualHost *:80>
DocumentRoot "/var/lib/jenkins"
ServerName www.hoge.com
ServerAlias www.hoge.com
ErrorLog "/var/log/jenkins/apache-error.log"
CustomLog "/var/log/jenkins/apache-access.log" common
ProxyRequests Off
ProxyPreserveHost on
ProxyPass /jenkins http://127.0.0.1:8080/jenkins
ProxyPassReverse /jenkins http://127.0.0.1:8080/jenkins
<Proxy http://localhost:8080/jenkins*>
Order deny,allow
Allow from all
</proxy>
</VirtualHost>
■Jenkinsの起動
$ sudo service jenkins start

これで、http://www.hoge.com:8080/へアクセス
 


■おまけ①(Jenkinsの常駐化)
$ sudo chkconfig jenkins on

確認
$ /sbin/chkconfig --list | grep jenkins

■おまけ②(jenkinsユーザーのログインシェル設定)
$ sudo usermod -s /bin/bash jenkins

これをしておくとjenkinsユーザーでシェルを実行する時に便利
※ sudo -u jenkinsでも出来るけどメンドイ
 

Life

Tech

Play