jenkinsでgulpをビルドする環境を構築

Pocket
LINEで送る

ローカル環境上でgulpでミニマイズするのが面倒なので、githubにpushしたタイミングでjenkinsでミニマイズして、DocumentRootに配置するような環境を構築してみました。

サーバー設定

まずは、サーバーにjenkinsをインストールします。
CentOSではいきなりJenkinsをyumでインストールすることができないので、
レポジトリとか公開鍵をとってきます。

$ 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
$ sudo yum install -y jenkins

インストールが完了したら、jenkinsの設定を行います。

$ sudo vi /etc/sysconfig/jenkins
#urlに/jenkinsさんを見せるため
JENKINS_ARGS="--prefix=/jenkins"

次にポート番号8080にアクセスした場合にjenkinsにアクセスできるようにApacheの設定を変更します。

$ sudo vi /etc/httpd/conf.d/vhost.conf
<virtualhost *:8080>
    ProxyPass / http://localhost:8080/jenkins
    ProxyPassReverse / http://localhost:8080/jenkins
</virtualhost>

jenkinsユーザーでコマンドを実行するのでsudoが使えるようにします。

$ sudo visudo
# Defaults    requiretty
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL

 
javaがインストールされていない場合はjavaをインストールしておきます。

$ sudo yum install java-1.7.0-openjdk

 
もろもろの設定が完了したので、Apacheの再起動とJenkinsを起動しておきます。

$ sudo service httpd restart
$
$ sudo service jenkins start
$ sudo chkconfig jenkins on

 
ついでにgitをインストールしておきます。

$ sudo yum install -y git

 

githubの設定

github側でWebhookの設定を行います。
settigns -> Webhooks & Services -> Services で「Jenkins(Git plugin)」を選択します。
選択後、hook先のURLを設定する箇所にJenkinsのURLを設定します。

jenkingithub

github側の設定はこれで完了です。

jenkinsの設定

まずは新規ジョブを作成します。
ジョブ名を記入し、「フリースタイル・プロジェクトのビルド」にチェックを入れます。
スクリーンショット 2015-03-09 18.18.14

続いて作成したプロジェクトの「設定」より詳細な設定を行います。
ソースコードの管理より「git」を選択し、githubのリポジトリURLを設定します。
次にビルドするブランチを設定します。ここでは「dev/html」というブランチを設定しています。
kentei Config [Jenkins] 2015-03-18 16-31-58

そして、「ビルド・トリガ」を設定します。
「Build when a change is pushed to GitHub」と「SCMをポーリング」にチェックをいれます。
ポーリング形式にはcronと同じ書式で登録しますが、今回は定期実行は行わないので「* * * * *」を入力しておきます。
kentei Config [Jenkins] 2015-03-18 16-35-19

最後に実行するシェルスクリプトを設定します。

#!/bin/sh
dir=/var/lib/jenkins/workspace/kentei/node_modules

# node_modulesディレクトリがなければ「npm install」を行う
if [ ! -e $dir ]; then
/usr/bin/npm install
fi

# gulp buildを行うためにディレクトリの移動
cd /var/lib/jenkins/workspace/githubのリポジトリ名
/usr/bin/gulp build &&:

# gulp build での実行結果をDocumentRootに転送
sudo rsync -vr --delete --exclude ".git/" /var/lib/jenkins/workspace/githubのリポジトリ名/build結果 'DocuemtRootのパス'
おすすめ書籍

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください