TravisCI Meetup Tokyoに参加しました #travisci_jp
(英語聞き取れてなかったり、誤訳あるかもしれない)
開催日時: 2014年09月17日(19:00-21:00)
会場: 渋谷区渋谷2-21-1 (渋谷ヒカリエ) 21F
URL: http://connpass.com/event/7901/
主催
- DeNA
- リクルーティング目的って言ってた
- DeNA
セクション
- 19:00 - hiro asari氏(TravisCI)
- TravisCIの使い方
- 19:30 - joshk氏(TravisCI CEO, Co founder @j2h)
- TravisCIについてプレゼン
- 20:00 - 有志によるLT5,6人
- 19:00 - hiro asari氏(TravisCI)
hiro asari氏 のプレゼン
日本語。
travis ciの話。
会場、travis使ってる人に挙手してもらったところ、半分くらいだった(意外と少ない)。
ライフサイクルの話。
.travis.ymlに書いたことがどのような順番で実施されるか。document読めばわかることだけど、ためになった
ciのデモ
あとは終始デモ
.travis.ymlを作ってgithubにpushしてビルド ->
Rakefileを作ってgithubにpushしてビルド ->
envを設定してgithubにpushしてビルド ->
rubyのバージョンを指定してgithubにpushしてビルド ->...
を繰り返しまくっていた。
結構初心者向けで、少し物足りなかったです。
以下、各種Tips紹介。
Tips
(一部、他の人のレビューから抜粋)
sudo: false
language: ruby
rvm:
- '1.9.3'
- '2.1'
下記は、
rubyの最先端でテストしたい + 特定のバージョンでは失敗OKみたいなこともしたい みたいなことをしている
sudo: false
language: ruby
rvm:
- '1.9.3'
- '2.1'
- ruby-head
env:
global:
- FOO=bar
matrix:
- RAKE_TASK=echo
- RAKE_TASK=foo
matrix:
allow_failures:
- rvm: ruby-head
script:
- bundle exec rake $RAKE_TASK
services:
- redis
- elasticsearch
addons:
postgresql:
- '9.2'
- '9.3'
- "ruby-head"は開発中の最新ruby(trunk)のこと。都度Travisがビルドしている
- env:は環境変数で、globalで全体に効き、matrix:で環境変数ごとのパターンをテストできる
- allow_failures: は、そのバージョンのテストが落ちても全体としては失敗したことにならない、ということ
- services: でテストに利用するようなサービスを指定できる。(redisとか、elasticsearchとか)
割りと瑣末な所感
- Sublime上でgitコマンド使いまくってた(プレゼン時にターミナルを使わない。見やすい)
- あと、標準出力に10分以上出力がないと異常とみなされエラーとなる問題があるが、
bashで「travis_wait」とかするとウェイト時間を長くすることができるらしい(秘密の設定)
joshk(Travis ci CEO) のプレゼン
- 英語だった。。!
- 油断してた、けど半分くらいはわかった(特に技術的な話題はわかった)
- 自己紹介のところはよくわからんかった
How does travis work?
openvz と dockerを使っている
125,435 jobs per day
125,435 vms shut down(ジョブごとにvmを立ち上げたりしてる)
Node.jsとRubyのプロジェクトが多い
社内には2つのチームがあって、チームteal(UX/UI担当)とチームblue(インフラ)がある。
チームblueでは、Docker(the big whale!って言ってた)使ってる
"But It Works On My Machine!" が起きる要因
- 「おれのマシンでは動くのに!」が起きる要因
- some new, some old some simple, some crazy
- 意訳:ときどき狂気に満ちた問題がある
* 注:ここから超意訳
(1枚目のスライドは撮るのを忘れた)
超意訳:
この中で開発にMacを使ってる方?
->
会場、いきなり質問が来たので手を挙げる人が少ない
->
Macだよ、Mac!
->
手を挙げる人がちらほら
->
では、プロダクションでMacを使っている人は?
->
ほとんど手を挙げず。
->
つまり、本番と同じ環境で動かすってこと大事だってことだ。
2枚目
inode file ordering differense
超意訳:
ファイルのオーダリングって、OSによって違う
ex.) mtime, alphabetal order
Test::Unit使ってる方?
- >あまり手が上がらない
RSpec使ってる方?
- >結構手が上がる
RSpecはデフォルトでランダムにテストするよね。だから、そのままでは同じ順序では実行できない
3枚目
Packages differences between travis ci and dev e.g.npm
超意訳:
npmは狂気だ。Gemfileは常識的だ。
4枚目
Services which are slow to start or configured differently
超意訳:
(よく聞き取れず。)
5枚目
Obscure bugs in language versions
超意訳:
ubuntuのあるバージョンのpythonは、linuxのディストリビューションを返す関数にdebian
と返す。
このバグは狂気的だ。
6枚目
Cross platform tooling issues
超意訳:
sedが取るオプションって、Macのほうが多いじゃん(Linuxでは動かないオプションが有る)
7枚目
超意訳:
(よく聞き取れず。)「apt-getの間にダッシュが要りますね。」とは言っていた。
8枚目
(よく聞き取れず。)またテストの順序の話だった
9枚目
超意訳:
「タイムゾーンを愛している人はいるか?」
- >笑いが起きていた
コンテナ型とハイパーバイザ型でのテストの動きの違い
駄文ですが疲れました。思い出したら追記するかもです