読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

Joshさん+Asariさん #travisci_jp

Asariさん

最初10分出遅れたので、その部分は他人のツイートで代用します。どうやらTravisCIの説明っぽいです。

デモ

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使ってても本番環境はマッキントッシュじゃあありません、という場合にはまること

  1. フィアルシステムのケースセンシティブまわりでハマるはある
  2. inodeの順番
  3. パッケージが違う(e.g. npm)
  4. OSちゃうと環境構築とかつらい
  5. 言語のバージョンでなんかよくわからんバグ
  6. updateしたらちょくちょく消えるパッケージ
  7. テスト
  8. タイムゾーン
  9. 仮想化のキャパの問題
  10. GNUとBSD