ネタ募集箱を支える技術 開発環境編

Post on 18-Jan-2017

661 views 2 download

Transcript of ネタ募集箱を支える技術 開発環境編

ネタ募集箱を支える技術

2016.01.26嶋田大輔

@cimadai (しまだい)

嶋田 大輔

自己紹介

https://bitbucket.org/daisuke-shimada

八王子 高尾山

https://github.com/cimadai

lネットワークとその周辺分野が得意lRTP / RTSP使って監視カメラの録画とかlWinny方面の技術とかl独自プロトコルで高速にデータを送る技術とか

自己紹介l最近興味を持っていること

l 機械学習 (ディープラーニング)l ブロックチェーン

l言語は複数触っていますが、好きなのはこんな感じ

l JSの本を2冊書いてます。

八王子 高尾山

l OpenCV 3.xl IoT などなど

本日の主題

ネタ募集箱

http://blog.cybozu.io/entry/8305

http://blog.cybozu.io/entry/8305

ピコーン

ネタ募集箱作ってみた

https://github.com/cimadai/neta-­‐inbox

Fork,  Pull  Request,  Issue登録歓迎です!

今日はこのネタ募集箱を作る中で使った技術をご紹介します

開発環境編

動作環境編

開発言語編

開発環境編

動作環境編

開発言語編

開発環境

Docker HubEC2

WerckerCodecov

全体としてはこんな構成で開発を進めています。

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

開発環境

Docker HubEC2

WerckerCodecov

全体としてはこんな構成で開発を進めています。

普段はIntelliJ IDEAで開発しつつgitでGitHubにcommit & push。

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

開発環境

Docker HubEC2

WerckerCodecov

全体としてはこんな構成で開発を進めています。

普段はIntelliJ IDEAで開発しつつgitでGitHubにcommit & push。

Wercker CLIを使ってLocalでもWebと同じCIを実行します。

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

開発環境

Docker HubEC2

WerckerCodecov

全体としてはこんな構成で開発を進めています。

普段はIntelliJ IDEAで開発しつつgitでGitHubにcommit & push。

Wercker CLIを使ってLocalでもWebと同じCIを実行します。

WerckerでCI & CDを行い、テストカバレッジはCodecovに流す。

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

開発環境

Docker HubEC2

WerckerCodecov

全体としてはこんな構成で開発を進めています。

普段はIntelliJ IDEAで開発しつつgitでGitHubにcommit & push。

Wercker CLIを使ってLocalでもWebと同じCIを実行します。

WerckerでCI & CDを行い、テストカバレッジはCodecovに流す。

できたDocker ImageはDocker Hubでホストしています。

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

もう少し詳しく

開発環境

DockerHub

WerckerCodecov

GitHubのIssueやPull Requestを使いつつ日々のコーディングを進めていきます。

EC2

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

開発環境

DockerHub

WerckerCodecov

GitHubのIssueやPull Requestを使いつつ日々のコーディングを進めていきます。

ZenHubと組み合わせるとGitHubにBoardというカンバン機能が付与されるのでとても使いやすいです。

EC2

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

ZenHub?

BoardsとBurndownが増える

Backlog To  Do Doing Done Close

Backlog To  Do Doing Done Close

カンバン便利(Boards = カンバン)

開発環境

DockerHub

WerckerCodecov

Wercker CLIを利用することで、手元のDocker環境でWerckerによるCIを実施することができます。

EC2

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

Wercker?

TravisCICircleCICodeship

みたいなCI/CDサービス

Why Wercker?

Why Wercker?Bitbucketでも使える!

無料で使える!

設定ファイル(wercker.yml)でビルドの設定ができる!

任意のコンテナでCIできる!

2

3

4

各リポジトリ対応状況

http://qiita.com/hiro_koba/items/282e3b2e534f4bc22d64より引用

料金比較2

http://qiita.com/hiro_koba/items/282e3b2e534f4bc22d64より引用

設定ファイルがYAML3

http://qiita.com/hiro_koba/items/282e3b2e534f4bc22d64より引用

wercker.ymlの例

実行しているステップの結果がリアルタイムに見ることができる

Dockerベースのシステム4

wercker.ymlの例

wercker.ymlの例

好きなDocker  container上でCIができる!

wercker.ymlの例

好きなDocker  container上でCIができる!

手元でも同じ環境でテストできる!

wercker.ymlの例

好きなDocker  container上でCIができる!

手元でも同じ環境でテストできる!

本番にも同じ環境でデプロイできる!

Dockerベースすごい

Wercker CLI?

ローカルのDocker環境で使えるWercker

システム

% wercker build ¥--working-dir=wercker_work ¥--direct-mount

手元で実行する例

※neta-­‐inboxのwercker.ymlでは、~/.zshrcにwerckerのaliasとして以下と、git  configでcodecovのトークンを設定しています。

# Wercker# with local git owner and repository namealias wercker=’

export X_WERCKER_GIT_OWNER=`git config remote.origin.url | sed -E "s/.*:(.*)¥/(.*).git/¥1/g"` && ¥export X_WERCKER_GIT_REPOSITORY=`git config remote.origin.url | sed -E "s/.*:(.*)¥/(.*).git/¥2/g"` && ¥export X_CODECOV_TOKEN=`git config codecov.token` && ¥wercker'

git config codecov.token <Your codecov token>

実行結果

Dockerベースすごい(再)

開発環境

Wercker

featureブランチがpushされるとWerckerでCIが動き始め、テストが実行されます。

Codecov

DockerHubEC2

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

CIが始まるとすぐにコメントをくれます。

Pull Request出してもコメントがつかずに寂しい思いをしていた人ももう安心。

開発環境

Wercker

テストのカバレッジはCodecovに保存し、結果をPull RequestコメントとしてGitHubに通知します。

DockerHub

Codecov

EC2

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

カバレッジが登録されると教えてくれます。

CI結果はこんな感じでわかるので便利!

このPRはテストが通ってないからだめだ!みたいなチェックが簡単にできる。

もちろんPull  Requestsの一覧でもわかりやすい

開発環境

Wercker

CIが成功したら、現在のブランチに応じてデプロイを実施します。

ネタ募集箱の場合はDocker imageを作成し、Docker Hubにpushしています。

Codecov

DockerHubEC2

GitHubIntelliJ IDEA

Wercker CLI

Local Cloud

デプロイされたDocker  image

featureブランチとdevelopブランチはdevelopタグでpush

masterブランチはリリース時のバージョンタグとlatestタグでpush

他のimageもご紹介

用意しているのは全部で3つ

ビルド時に必要な環境が入った

ビルド環境用image

ビルド環境用Dockerfile

アプリケーションを含むデプロイimage

デプロイ用Dockerfile

デプロイするimageの元となるベースimage

ベース用Dockerfile

あとは使いたい環境でdocker runするなり

docker-compose upするなりdockerの話もそのうちするナリ!>

オープンソースで開発しているのでここまで

全部無料!

無料 最高!!

オープンソース最高!!

まとめ• GitHub使うならZenHub便利でいいよ!• BitbucketならJIRA使っておけばOKじゃないかな。• Wercker使うとローカルCIもクラウドCIもできるよ!• WerckerはDockerコンテナでCIできるから柔軟性も抜群!

• テストカバレッジも出すといいよ。Codecov便利。• 開発もテストも本番も全てDockerでやろうぜ。• 今回は無料だったけど、必要ならばお金を出して楽をしよう!

参考URL• ZenHub– https://www.zenhub.io/

• Wercker (Web)– http://wercker.com/

• Wercker CLI– http://wercker.com/downloads/

• Docker Hub– https://hub.docker.com/

• みんなで技術ネタを持ち寄ってワイワイするには– http://blog.cybozu.io/entry/8305