SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

DMM.comの事例から学ぶリリースフロー自動化ガイド

リリースフローを自動化して、本来の開発業務に専念できる環境を整備しよう

DMM.comの事例から学ぶリリースフロー自動化ガイド 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Jenkins

 「Jenkins」は継続的インテグレーション(CI)ツールの一種で、シェルスクリプトをタスクとして定期的に実行したり、タスクの成否の管理や、順序付けなどを行ったりします。

 DMMでは、この後紹介するCapistranoやGruntなどの各ミドルウェアの起動・実行、実行順序の制御をすべてJenkinsで管理するようにしています。

 以下、サンプルタスクのsnapshotです。

dmm sample task1
dmm sample task1
dmm sample task2
dmm sample task2

Capistrano

 「Capistrano」はサーバー操作、デプロイの自動化ツールです。設定ファイルとRubyコードでリポジトリの情報やサーバーの情報などを記載します。

deploy.rb
#リポジトリの設定
set :application, 'DmmSampleApp'
set :repo_url, 'git@xxxx.xxxxxx.xxxx/yyy/dmmsampleapp.git'

set :deploy_to, '/var/www/dmm_sample_app'

(略)
deploy/production.rb
#サーバーの設定
server 'xxx.xxx.xxx.xxx', user: 'deploy_user', roles: %w{app}, my_property: :my_value
server 'xxx.xxx.xxx.xxx', user: 'deploy_user', roles: %w{web}, my_property: :my_value

(略)

 下記コマンドでデプロイを実行します。

bash
cap -f Capfile --roles app production deploy

 今回JenkinsからCapistranoを実行することで、Gitリポジトリから必要なソースコードをサーバーにデプロイし、デプロイ時に必要なディレクトリの作成や、コマンドの実行を行うようにしました。また、Capistranoの機能でデプロイしたコードのロールバックも行えるようにしました。

Grunt

 JavaScriptのminify、結合、テスト・構文チェックなどは、手作業で行うと非常に面倒です。「Grunt」はこう言った作業を自動化するためのビルドツール(タスクランナー)です。例として、下記のような設定ファイルを記載するだけで、ソースに変更があった場合に自動的に複数のソースを1つのファイルにマージすることができます。

concatのサンプル
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    cfg: config,
    concat: {
        options: {
            separator: '\n'
        },
        dist: {
            src: [
              'src/public/intro.js',
              'src/public/outro.js'
            ],
            dest: 'src/temp/dmm.xxxxxx.xxxx.js',
            nonull: true
        },
    },
(略)

 今回Gruntを使って、ユニットテストの実行やJSLintの実行、後述するistanbul、JavaScriptのminify/concat、CSSのコンパイルなどをすべて任せることで、Capistrano実行時にGruntコマンドですべての作業が流れるようにしました。

次のページ
Mocha/instanbul

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
DMM.comの事例から学ぶリリースフロー自動化ガイド連載記事一覧

もっと読む

この記事の著者

田中 裕一(株式会社DMM.comラボ)(タナカ ユウイチ)

DMM.comラボにおいて、検索システムの刷新、レコメンドエンジンの新規開発など、DMM.comの重要な機能を担うエンジニアとして従事。AeroSpikeを社内で採用し、日本人初のコントリビューターとしても活躍。サーバーサイド、フロントエンド、ミドルウェア、インフラと幅広く担当するDMM.comラボ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8354 2015/02/12 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング