Asariさん
最初10分出遅れたので、その部分は他人のツイートで代用します。どうやらTravisCIの説明っぽいです。
大量のレポジトリがあるとsyncに時間がかかるが、Travis側で該当リポジトリのスイッチをONにすると、githubにpushされるたびにビルドが走る #travisci_jp
— ジャバニャン (@pside) 2014, 9月 17
gitからのsetupや、インストール、スクリプト実行に関しては、travis側が責任を持ってやっている。各言語毎の違いに対応してる #travisci_jp
— おおた (@ota42y) 2014, 9月 17
デモ
rubyでTravisCIを試す
Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
sudo: false language: ruby
こんな感じでtravis.ymlを突っ込んでもビルドは失敗するので、とりあえずRakefileを作る。
文字コード失敗
.travis.ymlのシンタックスチェックができる https://lint.travis-ci.org/BanzaiMan/travis-intro-tokyo
こんなふうに書くことでRubyのバージョン別にビルドが実行される
sudo: false language: ruby rvm: - '1.9.3' - '2.1'
あと、ハードタブはだめ
環境変数を設定して複数のジョブを走らせることもできる
これをbuild matrixという
http://docs.travis-ci.com/user/build-configuration/#The-Build-Matrix
sudo: false language: ruby rvm: - '1.9.3' - '2.1' env: global: - FOO=bar matrix: - RAKE_TASK=echo - RAKE_TASK=foo
redisとelastic searchのサーバ連携
sudo: false language: ruby rvm: - '1.9.3' - '2.1' env: global: - FOO=bar matrix: - RAKE_TASK=echo - RAKE_TASK=foo script: - bundle exec rake $RAKE_TASK services: - redis - elasticsearch
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'
Joshさん
@J2H
How does travis work?
- open source projects
- one app on heroku
- one hetzner server
- 2 platforms
- 8 heroku apps
- 68+ servers
- 1100+ vms
- onenvz(コンテナベースの仮想化システム) and docker
- 82000 jobs
- 125435 jobs per day
- 125435 vms shut down(ジョブごとにvmを立ち上げたりしてる)
ビルド数はNode.jsやRubyが多め
two teams teal and blue
- teal フロントエンド
- blue インフラ
Docker使ってる
but it works on my machine
some new, some old some simple, some crazy
開発でMac使ってても本番環境はマッキントッシュじゃあありません、という場合にはまること
- フィアルシステムのケースセンシティブまわりでハマるはある
- inodeの順番
- パッケージが違う(e.g. npm)
- OSちゃうと環境構築とかつらい
- 言語のバージョンでなんかよくわからんバグ
- updateしたらちょくちょく消えるパッケージ
- テスト
- タイムゾーン
- 仮想化のキャパの問題
- GNUとBSD