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