Help us understand the problem. What is going on with this article?

Jenkinsでgulpタスクを動かすためのセットアップ(所要時間30分)

More than 1 year has passed since last update.

やりたいこと

Linux環境でJenkinsのジョブからgulpを起動する。

前提

  • Jenkinsがインストールされていること。
  • CentOS6

セットアップ

1. nodebrewインストール

$ sudo vi /etc/passwd

# jenkinsユーザーにsuできるように以下のように書き換える。あとで戻す。
# jenkins:x:497:496:Jenkins Continuous Build
# server:/var/lib/jenkins:/sbin/nologin
# ↓
# jenkins:x:497:496:Jenkins Continuous Build server:/var/lib/jenkins:/bin/bash
#

$ sudo su jenkins
$ curl -L git.io/nodebrew | perl - setup
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
$ nodebrew install-binary v4.7.0   # nodejs v4.7.0に指定。ここはご自身の環境に合わせてバージョン選択する。(https://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin なるものもあるが、本番系に影響あると嫌なのでやめた)
$ nodebrew use v4.7.0
$ node -v
v4.7.0

2. npmjsインストール

$ sudo yum install epel-release
# http://d.hatena.ne.jp/C_6B4A2B/20130427/1367073209をやる。でないとyumが動かなくなる。
$ sudo yum -y install npm --enablerepo=epel

3. jenkinsのジョブに以下のshell設定。ここは各々のリポジトリに合わせてうまく調節してください。

#!/bin/bash
export PATH=$HOME/.nodebrew/current/bin:$PATH
nodebrew use v4.7.0

# node_modules格納先
node_modules_dir=$HOME/jobsSettings/$JOB_NAME/

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

# package.jsonを最新にコピーする
cp -pf $WORKSPACE/package.json $node_modules_dir

# npm install
cd $node_modules_dir
/usr/bin/npm install

# node_moduleのシンボリックリンクはる
ln -s $node_modules_dir/node_modules $WORKSPACE/node_modules

# gulpタスク実行のため、gulpfile.jsの在り処までディレクトリの移動
cd $WORKSPACE/
gulp staging-deploy

# ほっとくとnode_modulesもステージング環境へ転送されてしまうので、シンボリックリンクはずす
unlink $WORKSPACE/node_modules

デプロイ時の制約

  • gitリポジトリ直下にpackage.json、gulpfile.jsを配置。node_modulesは、デプロイするブランチのpackage.jsonを元に再構築します。
  • gulpfile.jsのタスクにstaging-deployタスクをご用意ください。
    • staging-deployタスクにはsass、ejsコンパイルの実行を記述ください。
    • gulpタスクが途中でストップしてしまう記述にしてしまうと、jenkins デプロイが完了しませんので、ご注意ください。 (ex. browser-sync、watchなどクライアントPCに働きかけるようなものがあると、デプロイは完了しませんのでご注意を)

ポイント

  • nodebrewでnodejsをインストールする。でないと、jenkinsジョブでnodejsのバージョンが固定できなかった。
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away