dotstudioではGitLabを使っています。
ということでGitLab CIも最近つかいはじめてみています。
今日は、GitLab CIを使ってMilkcocoaのアプリケーションが動くかテストしてみたので紹介します。
GitLabのアドベントカレンダー代理で投稿させて頂きます
Milkcocoaとは
GitLabのアドベントカレンダーということでMilkcocoaの説明を簡単にします。
Milkcocoaはリアルタイム通信、IoTデバイスとの接続などが簡単にできるようになるバックエンドサービスです。
- https://mlkcca.com/
- Milkcocoaの歩き方 - 2016年12月版 (+2016年の振り返り) #mlkcca
- アドベントカレンダーもあります -> http://qiita.com/advent-calendar/2016/milkcocoa
今回やること
MilkcocoaにはNode.jsのSDKがあるので今回はNode.jsアプリケーションでMilkcocoaを動かして、別のアプリケーションと接続してみます。
CI上でアプリケーションを動かすってCIのちゃんとした使い方ではないですが、無料でホスティングサービス的にCIを活用できたら楽しいことできそうだなと思った次第です。
やりかた
まずはMilkcocoaのアプリケーションIDを取得しましょう。
Milkcocoaの送信テスト用JSサンプルこの辺も参考に
情報を送る側のsend.js
を作成
こちらでMilkcocoaのSendメソッドを使って情報送信ができます。
'use strict'
const MilkCocoa = require('milkcocoa');
const milkcocoa = new MilkCocoa('アプリケーションID.mlkcca.com');
const ds = milkcocoa.dataStore('message');
setInterval(()=>{
ds.send({v:1,time: new Date()}, (err, sended) => {
console.log('送信:', sended);
});
},2000);
send.jsはCI側で動作させます。2秒に一回sendするプログラムです。
受け取り側のreceive.js
を作成
'use strict'
const MilkCocoa = require('milkcocoa');
const milkcocoa = new MilkCocoa('アプリケーションID.mlkcca.com');
const ds = milkcocoa.dataStore('message');
ds.on('send', (sended) => {
console.log('受信:',sended);
});
手元のPCで動作させます。sendが発生したら反応します。
package.json
package.jsonのscriptsに以下を指定して、CI側でnpm run send
を実行することでsend.js
が起動するようにします。
・
・
・
"scripts": {
"send": "node send.js"
},
・
・
・
"dependencies": {
"milkcocoa": "^0.6.0"
}
・
・
・
またdependenciesにmilkcocoaを指定しましょう。
.gitlab-ci.yml
を作成
image: node:7.2.1
before_script:
- npm install
all_tests:
script:
- npm run send
そのままですが、7.2.1のNode.jsを使えるイメージでnpm install
してnpm run send
を実行します。
##試してみた
CIの画面で起動を確認しつつ、手元のPC側はreceive.jsを起動させます。
$ node receive.js
こんな感じでちゃんとCI側で動いてるsend.jsから手元のPCで動いているreceive.jsに対して情報が送られています。
思ったより普通に動きましたね。
##終わりに
これをずっと稼働させてるとどこかでfailするのかずっと起動できるのか、そもそも規約違反なのかはわかっていないのでとりあえず最後にキャンセルしておきました。これを何か実際のアプリケーションなどで活用する際は注意してください。