かまたま日記3

プログラミングメイン、たまに日常

GrailsでTwitterBotを作る(リリース編)

アプリケーション実装編の続き

今回CloudBeesのサービスを使いました。VCSGithubを使っている以外は全部CloudBees上のサービスを使わせてもらってます。*1

Grails Wrapperを作成

CloudBeesのJenkinsサービスは、Grailsがインストールされていないので、Grails Wrapperを作っておきます*2
以下のGrailsコマンドを打ちます

grails wrapper

GitHubにソースをコミット

アプリケーション実装編で作ったアプリのコードとGrails WrapperをGitHubに上げます。
kamatama41/sfc-bot · GitHub

新規のアプリケーションを登録する

CloudBeesにユーザー登録後、AppsメニューからAdd New Applicationを選択して、アプリ登録します。

Jenkinsのジョブを設定する

Buildsメニューから、Jenkinsのページ行けるので、新規Jobを[フリースタイルのビルド]で作成しておきます。
今回の名前はアプリ名と同じ「sfc-bot」にします。

次にジョブの変更を行います。設定する箇所はそんなにありません。

[ソースコード管理システム]

Gitを選択して、Repository URLにGitHubリポジトリのアドレスを指定します。

[ビルド]

Build With Grailsを選択します。
今回はGrails Wrapperを利用するのでUse Grails Wrapperを選択します。
Targetsに実行するコマンドを記述します。 -> clean "prod war"*3

[ビルド後の処理]

Deploy applicationsを選択します。
Add Applicationsボタンを押して、デプロイするアプリケーションの情報を記述します。

Application Configを設定する

外部化したTwitterAPIのキー情報を取得するために、本番環境にConfig情報を設定します。
設定のためにはCloudBees SDKを利用します。

SDKインストール

まずは、ローカルマシンにSDKをインストールします。(この辺参照)

config設定コマンド実行

以下のコマンドでAppilicationにConfig情報を設定できます。設定したConfig情報はアプリ上ではSystem.getProperty(key)で取得できます。

bees config:set -a sfc-bot TWITTER_CONSUMER_KEY=xxxxxxxxxx
bees config:set -a sfc-bot TWITTER_CONSUMER_SECRET=xxxxxxxxxx
bees config:set -a sfc-bot TWITTER_TOKEN=xxxxxxxxxx
bees config:set -a sfc-bot TWITTER_TOKEN_SECRET=xxxxxxxxxx

ビルド実行

さっき設定したジョブを実行します。成功したらデプロイ完了です。
http://sfc-bot.kamatama.cloudbees.net/
にアクセスして画面が出ることを確認します。

CloudBeesのAppsメニューから対象のアプリを選択して、Logsから標準出力のログを見てエラーが発生していないことも確認しておきます。*4

自分用メモ

  • Config情報の設定はJenkinsでもできるっぽい。 [ビルド後の処理]->[Applications]->[高度な設定]
  • Tomcat6とjboss7.0以外のコンテナでデプロイするためにはJenkinsのプラグインは使えない?

*1:CloudBeesのGitサービスを使うこともできます

*2:Grailsを個別にインストールすることもできます、たぶん

*3:一回cleanした後に本番環境としてwar化するという意味です。

*4:このログは標準出力しか出ないようなので、CloudBeesアプリのログは基本標準出力に出すようにしておきましょう。別途ログを保存したい場合は付属のpapertrailappサービスというのを使うようです