LoginSignup
4
3

More than 5 years have passed since last update.

jenkinsでcomposer.jsonとかpackage.jsonとかアップデートされた時だけコマンド実行

Posted at

はじめに

jenkinsでPHPとgulpを使ってAngular.jsのビルドしてます。

ビルド時に毎回composer.phar updateしたり、npm installするのもスマートじゃないので、composer.jsonとかpackage.jsonなど、対象のファイルに変更があった時だけ処理が走るようにします。

シェルスクリプトでのお話です。

前提

  • jenkinsが使える
  • jenkinsのビルド時にシェルスクリプトを実行している

やり方

まずは特定のファイルの直近の変更有無を確認

とりあえずこの方式で色んなパターン使いまわせます

git diff HEAD^ HEAD --stat -- ファイル名

例:リポジトリ直下のcomposer.jsonに変更があるか確認する場合

git diff HEAD^ HEAD --stat -- composer.json

変更があればこんな感じで表示されます。

composer.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

変更が無ければ何も表示されません

composer.jsonに変更があった時だけcomposerをupdate

# composer.jsonの変更を確認
json_change=`git diff HEAD^ HEAD --stat -- composer.json`

# composer.jsonに変更がある
if [ -n "$json_change" ]; then
   echo "composerに変更がありました"
   # composerのアップデート実施
   php composer.phar update
fi

package.jsonに変更があった時だけnpm install

# package.jsonの変更を確認
package_json_change=`git diff HEAD^ HEAD --stat -- package.json`

# package.jsonに変更がある
if [ -n "$package_json_change" ]; then
   echo "package.jsonに変更がありました"
   # npm install
   npm install
fi

おわりに

こんな感じでこの他にもbower.jsonの変更を検知してbower installしたりしてます。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3