Page 1
2013/12/14 A.Suzuki & H.Maeda
Page 2
この研修を開催するまで
10 min
せっかく勉強してるんだし何かつくりたい
D d作ろう
ゼヨ
Page 3
おー!Java
シラネー
んじゃ
なんか作ろう!
Java で…
Page 8
Heroku!
Heroku!エロく?
Page 9
Heroku!Gist!
SSHJacoco
CoverAlls
Maven
TravisBootStrap
どれもわからない
Page 11
GitHub + Travis CI + CoverALLs (+ Maven) で
CI開発環境を 2時間 で作る。
ビルドもテストもカバレッジ計測もコミット時に自動で実行
コミットがするのが楽しくなる CI 環境を作成
Page 12
CI継続的インテグレーションContinuous Integration
テストやビルドといったソ
フトウェアの統合プロセス
を可能な限り自動化し、継
続的に行う仕組み
Page 13
CI ツールの効果
1. 開発者の生産性や品質を向上
2. インテグレーション時の問題を早期発見し、防
止策の実施や、プロセス改善へとつなぐ
3. 複数の開発者や開発拠点にまたがる開発プロセ
スの統一化やノウハウを共有
Page 14
メジャーな CI ツール
JenkinceTeam Faundertion Server (Microsoft)
Travis CI
Page 15
開発環境本日利用する
WEB で提供されてい
る開発環境の紹介
10 min
Page 16
GitHub
ソフトウェア開発プロジェクトのための共有ウェブサービス
https://github.com/
Page 17
Travis CI
オープンソースコミュニティのためのホスティング型CI サービス
https://travis-ci.org/
Page 18
COVERALLS
テストのカバー率を計測、表示してくれるサービス
https://coveralls.io/
Page 19
プロ
ジェ
クト
Pu
sh
通知
プロジェクトPull
カバ
レッ
ジデ
ータ
ビルド , テストカバレッジ計測
カバレッジ蓄積、表示
リソースのバージョン管理 他
Page 20
GitHubリポジトリ作成
GitHub の
アカウントを取得し
プロジェクトを格納する
リポジトリを作成する
7 min
Page 21
2 合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
GitHub リポジトリ作成
GitHub リポジトリ作成
Page 22
GitHub のアカウント登録
[email protected]
name
後でも使うので覚えておいてくださ
い
GitHubSite
Page 23
GitHub のプラン選択
無料のプランを選択します
[Finish sign up]
Page 24
リモートリポジトリの作成
リモートリポジトリ
自分の PC
github
ローカルリポジトリ
Page 25
[New repository]で作成開始
GitHub リポジトリ作成 その1
Page 26
GitHub リポジトリ作成 その2
citest
Readme.mdを生成
[Java] を選択し、Git にアップロードしない
ファイルを設定する
Private はお金を払わないと利用できませ
ん !
username
英語小文字で“ citest”
Page 27
citest リポジトリの確認
citest
citest
username/ citest
Page 28
GitHubリポジトリ
の作成完了
Page 29
複数で開発するとき
コラボレータを設定すると
コードを共同編集できます
Page 30
ローカルリポジトリ作成
Eclipse の機能を利用し
GitHub のリポジトリから
ローカルリポジトリを作成
する
7 min
Page 31
3合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
ローカル リポジトリ作成
GitHub リポジトリ作成
Page 32
GitHub でのデータフロー
ローカルリポジトリ
リモートリポジトリ
com
mit
pushfetch
pullpull
自分の PC
github
Page 33
Clone によるローカルリポジトリの作成
ローカルリポジトリ
リモートリポジトリ
Clone
自分の PC
github
Page 34
[Git リポジトリエクスプローラ ]
を選択
Clone によるローカルリポジトリの作成
[ ウィンドウ ] – [ パーペスペクティブ ] – [ その他 ] を選択
Page 35
Clone によるローカルリポジトリの作成
[Git リポジトリーの複製 ] をクリック
[Clone URI] を選択し[ 次へ ] クリック
Page 36
リポジトリの URL を取得
citest
citest
username/ citest
ここをクリックしてURL をコピーする
GitHubSite
Page 37
GitHub( リモート ) リポジトリの https アドレスを入力
Clone によるローカルリポジトリの作成
Page 38
“ ワークスペースのフォルダパス”+ “ citest”
Clone によるローカルリポジトリの作成
Page 40
Maven ( メイヴァン / メイヴィン )
プロジェクト情報の一元管理
統一したビルドプロセスの提供
依存ライブラリの管理
上記の機能の助けを借り CIツールが機能しますAntの
機能はすべて網羅
Page 41
途中からプロジェクトに参加して環境作成にやたらと時間がかか
る・・
しかも環境の作成手順書わかりにくい・・・
Page 42
使用しているライブラリのバージョンが自分だけ違っ
て動作が違ったり
ビルドに失敗する。まー 気づくまで、時間のかかること
Page 43
ビルドと同時にテスト実行やJavaDoc 生成を実行したい
Page 44
Mavenが解決
CI ツールはビルドツールがないと動かない!
Page 45
Eclipce +Maven
Eclipce を使って
Maven プロジェクト
を作成
7min
Page 46
4合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
Maven プロジェクト作成
GitHub リポジトリ作成
Page 47
Maven プロジェクトの作成 1
[新規ウィザードの使用 ]
Git リポジトリエクスプローラの [ 作業ディレクトリ ] で右クリック
し[ プロジェクトのインポート ] を選
択
Page 48
Maven プロジェクトの作成 2
リストから ・ Maven プロジェクトを選択し、 [ 次へ ]
Page 49
Maven プロジェクトの作成 3
☑シンプルなプロジェクトの作成☑デフォルト・ワークスペース・ロケーションの使用を選択して [ 次へ ]
Page 50
Maven プロジェクトの作成 4
devmen.project
citest
グループ Id はアプリケーションを登録するグループ
アーティファクト Id はアプリケーションそのものを表す識別子
Page 51
Maven ディレクトリ構成の確認
← コードを格納します
← テストコードを格納します
← Maven の設定ファイル
展開する。
Java パースペクティブ を選択して..
Page 52
Mavenプロジェクト
完成なんもソースがないけど・・・
Page 53
ソースコード作成
これから
ビルド・テストを
行うための
Profile クラス を作成します
5 min
Page 54
5合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
ソースコード追加
GitHub リポジトリ作成
Page 56
Profile クラスの作成
“Profile”
Page 57
Profile クラスの追加
package citest;
import java.util.ArrayList;import java.util.List;
public class Profile {private String name =" じょん ";private List<String> tags = new ArrayList<>();
public String getName(){return name;
}
public void addTag(String tag){this.tags.add(tag);
}}
Profile.javaGist
Page 59
POM.XML作成
MAVEN のビルドに必要
な POM ファイルを作
成
10 min
Page 60
6合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
pom.xml 作成
GitHub リポジトリ作成
Page 62
POM.XML にコンパイラの設定追加
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins></build>
コンパイルを実行するプラグインに
Java バージョンを設定
Maven が使用するエンコーディング
FirstPomGist
Page 63
Maven プロジェクトを更新
プロジェクトを選択し、[Alt] + [F5] を入力
Page 64
Maven でビルドを実行
“…” がついてる
メニューを選ぶ
Page 65
Maven でビルドを実行
“compile”
Page 66
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.[INFO] Scanning for projects...[INFO] [INFO] ------------------------------------------------------------------------[INFO] Building citest 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ citest ---[debug] execute contextualize[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO] [INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ citest ---[INFO] Nothing to compile - all classes are up to date[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.471s[INFO] Finished at: Thu Nov 28 21:26:42 JST 2013[INFO] Final Memory: 7M/191M[INFO] ------------------------------------------------------------------------
Page 68
テストコード作成
(Junit4)
Profile クラス の
テストコードを追加して
Maven に
テストを実行させてみよう
7 min
Page 69
7合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
テストコード追加 とMaven での実行
GitHub リポジトリ作成
Page 70
テストコードの追加 その1クラスの上で右クリックする
[新規 ] – [ その他 ]
Page 71
テストコードの追加 その2main -> test に変更する
“ju” と入力し、[Junit テストケース ] を選
択
Page 73
テストコードの追加 その4package citest;
import static org.hamcrest.CoreMatchers.*;import static org.junit.Assert.*;
import org.junit.Test;
public class ProfileTest {
@Testpublic void testGetName() {
Profile profile = new Profile();String expected = " じょん "; String actual = profile.getName();
assertThat(actual, is(expected)); }}
ProfileTest.JavaGist
Page 74
テストコードの追加完了
Junit のライブラリ参照問題で
ところどころ赤いですが・・
Page 75
Mavenライブラリ参照設定
Maven に依存関係
を定義し、面倒な参照設
定を自動で行う
7 min
Page 76
8合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
テストコード追加 とMaven での実行
GitHub リポジトリ作成
Page 77
Maven でライブラリ参照を解決
使用側
ライブラリのインストール
ライブラリの参照設定
ライブリの更新作業
提供側Lib フォルダなどにライブ
ラリを入れて提供
設定手順書などのドキュメント
バージョン更新
Page 78
Junit4 のライブラリを自動設定
“junit” を入力し[Enter]
プロジェクトを選択し、右クリックし
[Maven] – [ 依存関係の追加 ] を選択
Page 79
Maven プロジェクトの更新
プロジェクトを選択した状態で
[Alt] + [F5]
Page 80
Maven でテストを実行してみよう
プロジェクトを選択し右クリック
[ 実行 ] + [Maven test]
Page 81
テスト実行成功------------------------------------------------------- T E S T S-------------------------------------------------------Running citest.ProfileTestTests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.097 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 3.986s[INFO] Finished at: Fri Nov 29 22:52:39 JST 2013[INFO] Final Memory: 8M/151M[INFO] ------------------------------------------------------------------------
Page 82
Mavenライブラリ参照テスト実行環境
作成完了
Page 83
First Push
Eclipse で GitHub の
設定を行い
プロジェクトを GitHub に
プッシュする
5 min
Page 84
Git のユーザ設定メニューの [ ウィンドウ ] – [ 設定 ] を 選択し、設定ダイアログを表示
“git” と入力しツリーから
[チーム ] – [Git] – [構成 ] を選択
[ エントリーの追加 ] で以下の値を追加する
キー 値user.name GitHub のユーザ名user.email GitHub の登録メールアドレ
ス
Page 85
Commit And Push
ローカルリポジトリ
リモートリポジトリ
com
mit
pushfetch
pullpull
自分の PC
github
Page 86
Commit And Push
パッケージエクスプローラ
の プロジェクトの上で右クリックして
[チーム ] – [ コミット ]
Page 87
Commit And Push
[ ] ✓ をクリックしてすべてのファイルを選択
コメントを書かないとコミットでき
ないよ
Page 88
リモートリポジトリ
へ Push 完了
Page 89
複数で開発するとき
Mail のサービスフックを設定するとコミット時に
メールを送信することが出来る
Page 90
9合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
Travis CI の設定 15min
GitHub リポジトリ作成
Page 91
Travis CI
オープンソースコミュニティの為の、ホスティング型CI サービス。
https://travis-ci.org/
Page 92
CI を体験しよう!( 継続的インテグレーション )
目的 Travis CI を使用して継続的インテグレーションを体験する
流れ Travis CI サインイン ビルド設定ファイル作成 ビルドの確認
Page 93
Travis Travis
サインインする
Page 94
Travis CI へサインインTravis CISite
[Sign in with GitHub]をクリックして
GitHub のアカウントでサインインする
Page 95
Travis CI のサービスフックの有効化
サービスフックの設定画面に遷移する
Read/Write の設定は変えられない
[Allow Access] をクリック
Travis が GitHub にアクセスすることを許
可
GitHub Site
Page 96
Travis CI の言語設定
[Profile] をクリック
Travis CISite
[ 日本語 ] を選択
Page 97
リポジトリを有効にする
[ON] をクリック対象リポジトリで
Travis CI を有効にする
Page 98
Travis
Travis のビルドに必要な設
定ファイル
.travis.yml ファイルを
作成する。
10 min
Page 99
.travis.yml 作成GitHub Site
[+] マークをクリックし、新規ファイルを追加
Page 100
.travis.yml 作成 ファイル名 “.travis.yml”
を入力
[Commit New File]をクリックして
ファイルをコミット
.travis.ymlGist
Page 101
Travis CI ビルド Travis CISite
GitHub に Push するたびに自動でビルドされる
※時間がかかる場合があるので注意
Page 102
プロ
ジェ
クト
Pu
sh
通知
プロジェクトPull
カバ
レッ
ジデ
ータ
ビルド , テストカバレッジ計測
カバレッジ蓄積、表示
リソースのバージョン管理 他
Page 103
ビルドステータスバッジ
GitHub に Push した時にビルドが成功しているか確認したい!
GitHub だけで確認できたらいいね
ビルドステータスバッジ
Page 104
ビルドステータスバッジ
ビルドステータスをクリック
Travis CISite
Page 105
ビルドステータスバッジ
. README.md に貼りつけるためmd(Mark Down) の記述を
コピーする
Page 106
ビルドステータスバッジGitHubSite
[README.md] クリックし、編集する
Page 107
README.md 編集
[Edit] をクリック
Page 108
ビルドステータスバッジ
Travis-ci でコピーした .md 用のビルドステータスバッジを貼りつける
行末にスペース 2 で改行になる
Page 109
ビルドステータスバッジ
[Commit Changes]をクリックして
ファイルをコミット
Page 110
ビルドステータスバッジ
ビルドステータスバッジが表示される
Page 111
Travisでいつでも
ビルドとテストが走るようになったよ
Page 112
10合目
ローカルのリポジトリ作成
Travis CI の設定
Maven プロジェクト の作成
ソースコード追加
Pom.xml 作成
テストコード 追加・実行
First Push
CoverAlls の設定
CoverAlls の設定
GitHub リポジトリ作成
Page 113
COVERALLS
テストのカバー率を計測してくれるサービス。
https://coveralls.io/
Page 114
ビルド時にカバレッジも確認しよう!
流れ COVERALLS にサインイン COVERALLS セットアップ Maven POM の編集 ローカルテスト実行 COVERALLS でカバレッジ確認
目的 ビルドとテストを自動で行ってカバレッジを計測する サービスを体験する
Page 115
COVERALLS
COVERALLS
のセットアップを行い
カバレッジデータを
表示してみよう
10 min
Page 116
CoverAlls にサインイン CoverAllsSite
[Sign in with GitHub]をクリックして
GitHub のアカウントでサインインする
Page 117
CoverAlls のサービスフックの有効化
[Allow Access] をクリック
Coveralls が GitHub にアクセスすることを許可
サービスフックの設定画面に遷移する
GitHub Site
Page 118
Github リポジトリ追加
[ADD REPO] をクリック
リポジトリを追加する
Page 119
Coveralls を有効にする
[ON] をクリック対象リポジトリで
CoverAlls を有効にする
Page 120
プロ
ジェ
クト
Pu
sh
通知
プロジェクトPull
カバ
レッ
ジデ
ータ
ビルド , テストカバレッジ計測
カバレッジ蓄積、表示
リソースのバージョン管理 他
Page 121
GitHub から Pull する
ローカルリポジトリ
リモートリポジトリ
com
mit
pushfetch
pullpull
自分の PC
github
Page 122
GitHub から Pull する( Eclipse)
[チーム ] – [ プル ]
GitHub 上で編集したのでリモートリポジトリとローカルリポジトリを同じ状態にする
Page 123
Maven POM の編集
Second pom.xmlGist
pom.xml 編集
Page 124
JUnit
Junit 実践入門テストコードの書き方
テストファーストMaven の設定
カバレッジの計測継続的インテグレーション
Page 125
POM の更新
[Maven] –[ プロジェクトの更新 ]
pom.xml の編集内容をプロジェクトに反映する
Page 126
POM plugin execution エラー回避
上から 2番目のリンクを選択する
Page 127
Maven build構成
[ 実行 ]->[Maven build(*)…]“…” がついてるメニューを選ぶ
Page 128
プラグインのゴール設定
clean jacoco:prepare-agent test jacoco:report
Maven goalGist
[ゴール ] を設定
[ 実行 ] をクリック
Page 129
レポートを見てみよう!
[ リフレッシュ ] を選択し、 [target] フォルダに[site] が作成されている
ことを確認する
Page 130
Index.html
パッケージエクスプローラーのIndex.html 上で右クリック
メニューの [ 次で開く ] – [Web ブラウザー ]
を選択する
Page 132
GitHub に Push する
ローカルリポジトリ
リモートリポジトリ
com
mit
pushfetch
pullpull
自分の PC
github
Page 133
GitHub に Push する( Eclipse)
[チーム ] – [ コミット ]
編集内容をコミットしてGitHub へプッシュ!
Page 134
GitHub に Push する( Eclipse)
コミットメッセージ“Update pom.xml for Jacoco
and Coveralls”を入力
[Commit and push]
[pom.xml] にチェックが入っていることを確
認
Page 135
カバレッジステータスバッジ
カバレッジのステータスを GitHub 上でも常に見たい!
カバレッジステータスバッ
ジ
Page 136
カバレッジステータスバッジ
. README.md に貼りつけるためmd(Mark Down) の記述をコピーする
CoverAllsSite
Page 137
カバレッジステータスバッジ GitHubSite
[README.md] をクリックし編集
Page 138
README.md 編集
[Edit] をクリックし編集
Page 139
カバレッジステータスバッジ
COVERALLS でコピーした .md 用のカバレッジステータスバッジを貼りつけ
る
Page 140
カバレッジステータスバッジ
[Commit Changes]をクリックして
ファイルをコミット
Page 141
カバレッジステータスバッジ
カバレッジステータスバッジが表示される
Page 142
COVERALLS を覗いてみよう
ビルドごとのカバレッジが確認できる
CoverAllsSite
Page 143
ファイルごとのカバレッジ
ビルドごとのカバレッジが確認できる
Page 144
カバレッジ
テストしていないコードは赤
テストしたコードは緑
Page 145
COVERALLSでいつでも
カバレッジデータを確認できるよ。
Page 146
最後に 本日学んだことの
振り返り
Page 147
世の中には便利な
サービス , ソフトが
たくさん
Page 148
今日もGitHub, Travis CI,
Coveralls, Gist, GitHubPages,
サイボウズ live, Maven, BootStrap
Page 149
僕みたいな年よりが試す
より
中堅 もっと トライ!
研修もやってね
Page 150
N1 にもつかえる。(環境は先輩が整えよう)
コミットしたらメールがきて。作業状況も確認できる
CI は生産性上げて利益につなげる一つの手段
Page 151
ここが楽しい!
このタイトルのスライドを随所
に織り込み楽しいポイントを紹
介してあげる!!
たとえば コミットメールとか!