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

LT #travisci_jp

TravisAPI

どこで使うの

  • 自作gemテスト
  • Redmine

なんでTravis

  • ビルドマトリクス
  • aptが使える

API

  • 過去ビルド情報の取得
  • APIを叩くためのGem

さらにAPIを自作してみた

travis tokenでaccess tokenは取得できるよ

ジョブの各セクションごとのduratoinが取得できると嬉しい

APIでジョブの中断とかができる

Automated releasing iOS app with Travis CI

ユビレジきしかわ氏

リリース作業の自動化をTravisで

各種rakeコマンドをTravisCIで

$ bundle exec rake -T

travisのgemでファイルをs3に送っている

Travisでビルドされた成果物をTravisでs3にアップロード

リリースブランチにpushされたらTravisが動く

http://sanemat.github.io/talks/20140917-travis-ci-meetup-tachikoma-io/

QUnit on Travis CIという名前でLTをやった #travisci_jp

QUnit on Travis CI

とりあえず喋りました。

自作JSライブラリと、QUnitとTravisCIのトリプルコンボの話をしました。

Travisの結果をSlackでメッセージを送って…みたいな話もしました。

JavaScriptNinjaでも書いていたような気がしましたが、JavaScriptではあんまりテストコードが書かれるイメージがありません。

でも品質保証という点でテストコードとCIは必須であると考えたため、自作のJSライブラリでもわりと手を抜かずにテストコードを書いたつもりです。

テストの結果をTravisCIで回すだけなので、あまりむずかしいことはしていません。

感想

たぶん緊張していました。

デモやろうとしましたけど、時間制限があるのかないのかわからない状態だったので、無理でした。

いつものことですが、自分のプレゼン能力の低さを実感しました。もっと前もって練習するべきだと感じました。

なんというか、LT前で自分のことを紹介されるときにHNを「しげえむけーつー」って言われたのがちょっとアレでした。まあ、mk2を「まーくつー」ってすんなり言える人、あんまりいないんだなって感じです。

とりあえず、プレゼン前にはもっと練習しないといけないなって思いました。

Travis CI Meetup Tokyoに行ってきた #travisci_jp

割と簡単に感想を述べます。

Travisの話が前半、後半はLTでした

TravisCIはGitHubとの連携が簡単なので、オレオレリポジトリをCIするときによく使います

TravisCIはオープンソースで、ソースコードを読んだりPRを投げたりすることができるようです あとRubyメインで、Dockerとか使っているみたいです。

travis-ci/travis-build · GitHub

なんだかよくわかりませんが、比較的疲れました。。