もふもふ技術部

CircleCIとRaspberry Piを使ってロマサガCIを作る


写真 2014-09-23 14 47 31

前回の続きをやります。
rasberry piでロマサガ始業チャイムを作る

まずは前回の続きということでLAN内からのアクセスで音声を再生出来るか再度チェックしておきましょう(IPは例。環境に合わせて読み替えて)。

http://192.168.1.10/build_notification.php

各設定

次はLAN外からアクセスで音声を再生させたい。

ファイアウォールで80番ポートの開放と、ルーター側でポートフォワードの設定する。やり方はそれぞれ違うと思うので詳しくは省略します。このあたりの設定を変更するのはセキュリティリスクがありますので自己責任でお願いしますね。

raspberry pi側にも一応ファイアウォールを入れとこう。iptablesを設定します。

設定内容は下記などを参照。
http://wordpress.zenmai.org/2013/09/29/raspberry-pi-9-2/

done.と出ていれば成功です。

chkconfigで自動起動の確認。問題ないですね。

この辺りでLAN外からのアクセスで音声を鳴らせるかチェックしておこう。iptablesの設定でアクセス元のIPを許可するのを忘れずに。

http://your_global_ip/build_notification.php

続いて、CircleCIの設定を。
ビルド結果を通知したいプロジェクトのcircle.ymlにwebhookの設定を追記しておきます。

下記によると、どうやらCircleCIのweb hookはAWSのUS EastリージョンのIPからアクセスされるとのこと。
https://circleci.com/docs/ec2ip-and-security-group

書いてあるIP範囲をiptablesに設定しておくとちょっとだけ安全性を向上出来ます。一応やりました。

PHPで受け取る

CircleCIの通知はJSON形式でPOSTされるので、apache+phpでJSONを受け取るAPIを実装していきます。

phpでjsonを受け取る実装はこちらを参考にしました。
http://takuya-1st.hatenablog.jp/entry/2013/07/19/221203

json_decodeがnullになる問題でちょっとハマったんですが、デバッグするとき正しくないjson形式でpostするとnullになってしまう模様。ぼくの場合、jsonの最後の要素の後ろにカンマが残っていてnullになっていました。
http://web-dd.net/?p=730

ではいよいよビルドしてみます。circle.ymlの変更をgithubにpushします。

ビルドを待つこと数分。
ててててーてーてっててー!
鳴りましたね!!!

sslの設定

CircleCIから渡ってくるJSONには結構詳細な情報が入ってきてました(Single Buildを見ればいいのかな)。
https://circleci.com/docs/api#build

これをhttpで渡すのはちょっと抵抗があるのでhttps必須です。apache2のsslを有効にするにはこんな感じでいけます。httpsでアクセスしてみて音声が再生されるかチェック。

あとは、ssl証明書を購入するなどして適用させましょう。sslの証明書取得などは他で十分解説されているので省略。この辺を参照のこと。
https://jp.globalsign.com/support/server/03.html?service=ssl

sslの設定ファイルを修正してapacheを再起動。

httpsでアクセスしてみる。てーれーれーれーれーーーーーれー
できたあああ!!

https://your_domain/build_notification.php

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。