Github+ALMinium+Travis+heroku

2,410 views

Published on

第二回TISMatsuri LT
2013/12/11
@koudaiii

Github+ALMinium+Travis+herokuの自動連携した時の話です。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,410
On SlideShare
0
From Embeds
0
Number of Embeds
768
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Github+ALMinium+Travis+heroku

  1. 1. Github+ALMinium+Travis+her oku 第二回TISMatsuri LT 2013/12/11 @koudaiii
  2. 2. こんな人  @koudaiii  TISMatsuriメンバー
  3. 3. 2012年12月15-16日サイバーエージェントにて
  4. 4. Devlove2012に参加
  5. 5. 同期3名程で参加し、帰りにラーメン食べに行く
  6. 6. 来年は、 自分がスタッフ側で参加して、 いつか発表する側で参加したいなぁ
  7. 7. 2013年11月09日楽天タワーにて
  8. 8. スタッフ並びに、たまたま出演者として参 加!!
  9. 9. Devlove甲子園で話したこと  インフラ担当者(Ops)側もDevと協力してビジネスを考えていく  日々運用する中で改善していかないと気がついたら塩漬けシス テムになる  次への準備(Version2)をしていく  運用者(サポート)が一番お客様からの声(ログと問い合わせ)が 聴こえるからこそできることがある
  10. 10. 定例作業ばかりがインフラじゃない
  11. 11. なので、インフラ周りを自動化しよう!
  12. 12. まずは!TISMatsuriのプロモを自動化
  13. 13. チケット→開発→コミット→テスト→リリース ここを自動化していく
  14. 14. チケット→開発→コミット→テスト→リリース  コミットとチケットをちゃんと連携させる  コミットから自動テストをする  自動テストがOKだった場合リリースする  出来る限りサーバーの面倒は見ない
  15. 15. Architecture
  16. 16. リリース管理 MaterでTestが通ったら リリース WebHook WebHook
  17. 17. ALMinium(Redmineベース) ・リポジトリ (Git,Subversion, Mercurial) ・Backlogプラグイン同封 (スプリント、ストーリー、 タスク、バーンダウン チャート、かんばん) ・ガントチャート ・Hudson/Jenkinsと連携す るプラグイン ・コードレビュー ・標準Redmine(wikiやチ ケット)
  18. 18. Github TISMatsuriのプロモーショ ンサイトでは、Githubを使 用
  19. 19. TravisCI ・継続的CI活動ができる SaaS ・herokuへのDeploy可能 (テストの自動化をして、リ ファクタリングのしやすい 環境を作って、コードの品 質向上を継続的に行ってい くサイクル)
  20. 20. heroku ・IaaS環境 ・Basic認証ができること ・無料枠がある ・rails/rakeコマンド ・豊富なAddon ・独自ドメイン
  21. 21. ALMiniumとGithubの連携  RedmineとGithub連携用のpluginを導入  ALMiniumの環境にて – # gem install json – # cd /opt/alminium/plugins – # git clone git://github.com/koppen/redmine_github_hook.git  Redmine再起動 – # touch /opt/alminium/tmp/restart.txt
  22. 22. ALMiniumとGithubの連携  Githubからのhookを受けるようのリポジトリ作成 – – – – # mkdir /opt/repos # chown -R apache:apache /opt/repos # cd /opt/repos # sudo -u apache git clone --mirror https://github.com/hogehoge/fugafuga.git
  23. 23. ALMinium側の設定 識別子を確認
  24. 24. ALMinium側の設定 バージョン管理システムは Git リポジトリのパスを FullPathで記載
  25. 25. Github側の設定 Githubのリポジトリにある Settingsをクリック
  26. 26. Github側の設定 ・WebHookより、URLを記載 URL:http://myalminium.com/github_hook?project_id=<p roject identifier> ※<project identifier>はAlminium上で設 定したプロジェクトの識別子.登録したレ ポジトリではなく,プロジェクトの識別子 であることに注意.
  27. 27. Github+ALMinium Github ALMinium  WebhookのURL設定  Pluginの導入  Project identiferは事前に 控える  Mirror用のリポジトリ作成  ALMinium側でリポジトリを 指定 これで!チケット駆動開発ができる!
  28. 28. TravisとGithubの連携  .travis.ymlを[RAILS_ROOT]に配置して、以下のように設定。 – $ cat .travis.yml language: ruby rvm: - 2.0.0 gemfile: - Gemfile env: - DB=mysql script: - cd myapp – - bundle install --standalone --clean - RAILS_ENV=test bundle exec rake --trace db:create - RAILS_ENV=test bundle exec rake --trace db:migrate - bundle exec rake db:test:prepare - bundle exec rspec spec/
  29. 29. TravisとGithubの連携  TravisCI用にdatabese.ymlを変更。  usernameとpasswordは空で、  hostはローカルホストに設定。  socketはデフォルトのまま。 – $ cat config/database.yml   test: adapter: mysql2 encoding: utf8 database: matsuri2_test pool: 5 username: password: host: 127.0.0.1 socket: /tmp/mysql.sock 後は、GithubへコミットすることでtravisCIが動いてくれます。
  30. 30. Travisとherokuの連携  TravisCI用にコマンドツール導入。 – $vim Gemfile  gem ‘travis’ – $ bundle install – $ bundle exec travis – $ bundle exec travis setup heroku Deploy only from doyomeki/matsuri2? |yes|  Deploy from develop branch? |yes| no ←開発用のブランチはあかん!  Encrypt API key? |yes| 
  31. 31. Travisとherokuの連携  API_KEYの設定  api_keyそのまま書くのはまずいので、travisのコマンド使っ て暗号化する。 – bundle exec travis encrypt -r Username/Reponame $(heroku auth:token) --add deploy.api_key  Username/ReponameのところはGithubのユーザー名/リポジトリ 名を。
  32. 32. Travisとherokuの連携  ブランチとステージングを設定 – 今回はdevelopとmasterのブランチでGithubにpushすると、それぞれ HerokuのStaging・Production環境にデプロイされるように設定できる。 – 今回はmasterのみ #.travis.yml  〜〜  – – – – – – – – deploy: provider: heroku api_key: secure: ENCRYPTED_API_KEY app: master: myapp on: repo: username/repository
  33. 33. チケット→開発→コミット→テスト→リリース  コミットとチケットをちゃんと連携させる  コミットから自動テストをする  自動テストがOKだった場合リリースする  出来る限りサーバーの面倒は見ない 空いた時間に♪  社内SNSなどに周知  フィードバックをもらう  次のリリースを考える
  34. 34. Devlove甲子園で話したこと  インフラ担当者(Ops)側もDevと協力してビジネスを考えていく  日々運用する中で改善していかないと気がついたら塩漬けシス テムになる  次への準備(Version2)をしていく  運用者(サポート)が一番お客様からの声(ログと問い合わせ)が 聴こえるからこそできることがある だいぶ近付いてきていませんか!?!?!?
  35. 35. ご静聴ありがとうございました

×