もくもく完全自動化開発プロセスお見せします
DevOpsby GitHuband Cloud servicesYoichiro Shimizu@budougumi0617
この LT でわかること• クラウドサービスを組み合わせるとどんな開発プロセスが構築できるのか
紹介するサービスは全て無料です※ オープンソース適用時※MS Azure は試用枠
今日のお題• Webアプリケーション• リリース先:クラウドサーバ
• and to
誰かが知らないうちに本番コードが変更していた
最新コードを使うとテストケースが通らない
最新コードとマージしたらビルドできなくなった
手順書通りに環境インストールしたのに起動しない
同じ手順書見て構築したのに挙動が違う
クリーンインストールしたいけど手順が複雑なので後回し
◯ さん環境だと動くらしいが自分の環境では動かない
デバッグ時に環境設定変更どこを変更したか忘れた
◯ さんが休みなのでリリースできません
人が作業するからミスや差異が発生する
コードの変更と変更の承認以外を
全て自動化してみた
構築した構成• https://github.com/budougumi0617/DevOpsForGolang
Docker Hub
Docker Cloud
コード管理 リリース管理
本番環境
変更評価
監視 &監視
監視 &
変更
通知
コード取得
デプロイ
取得
リリース登録
GitHub
• ソースコードの構成管理サービス• 970 万ユーザー /2000 万プロジェクト
(2015/6 時点 )• Wiki ・障害票・変更依頼の管理なども可能
• https://github.com/
Travis CI
• クラウドにある Jenkins のようなサービス
• 自動ビルド・自動テスト
• ビルド成果物のデプロイなども可能
• https://travis-ci.org/
Coveralls
• テストカバレッジ集計• テスト実行行の可視化• https://coveralls.io/
Code climate
• 自動静的解析 /ファイル別品質評価• https://codeclimate.com/
+ + + 連携• ソースコード構成管理・障害票 /修正依頼管理• コード修正依頼は全て自動ビルド・テスト
• ビルド・テスト失敗時はマージさせない
• 指定カバレッジ率以下の変更はマージさせない
• 静的解析エラー時はマージさせない
Docker 技術
• コンテナ型仮想化技術
• 仮想マシン (VM) の構成をコードで定義
• いつでもどこでも同じ環境をつくれる
Docker Hub
• VM(Docker)イメージのバージョン管理サービス
• 主要 OSS/ 言語の環境構築済公式イメージ多数
• https://hub.docker.com
Docker Cloud• Hub 上の VM イメージ更新時に本番環境へ自動リリース
• サーバのクラスタ構成管理や VM 間連携管理なども可能
• 2016/02 Tutum よりリブランド https://cloud.docker.com
Microsoft Azure
• クラウドサーバサービス• 今なら毎月 3,000 円分 /12 ヶ月間の試用可能
• https://my.visualstudio.com
構築した構成• https://github.com/budougumi0617/DevOpsForGolang
Docker Hub
Docker Cloud
コード管理 リリース管理
本番環境
自動評価
監視 &監視
監視 &
変更
通知
コード取得
デプロイ
取得
リリース登録
具体的な構築方法については来月ハンズオンで解説します
まとめ• クラウドサービスを組み合わせて自動開発プロセスを作ってみました• 詳しいことは来月のハンズオンで
Have a nice development
構成情報
• コード構成管理 GitHubhttps://github.com/budougumi0617/DevOpsForGolang
• リリース物構成管理 DockerHubhttps://hub.docker.com/r/budougumi0617/devopsforgolang
• 継続的インテグレーション Travis CIhttps://travis-ci.org/budougumi0617/DevOpsForGolang
• テストカバレッジ Coverallshttps://coveralls.io/github/budougumi0617/DevOpsForGolang
Go 言語
• Google が作った新興開発言語 (2009-)• 手続き型 / 軽量スレッディング / 開発者フレ
ンドリー
• 公式キャラの Gopher くんが可愛い
Alpine Linux
• セキュアで軽量な Linux ディストリビューション
• Docker イメージのサイズが 1/10 くらいになる
• 素だとサイズが 5MB 強
できたこと 1
• ソースコード /障害票 (Issue)/レビュー依頼 (pull req)の管理• 修正コードを使ったビルド /テスト自動実行• テストで実行されたコードの行を自動可視化• テストのカバレッジ率自動計算• レビュー合格コードは自動マージ• 自動マージ後はリリースオブジェクト自動生成
できたこと 2
• リリースオブジェクト管理• 仮想動作環境 (VM)は毎回コードで新規作成• リリースオブジェクトは
VMイメージ+アプリをパッケージング• リリースオブジェクト更新時はサーバへ自動デプロイ