Slide 1

Slide 1 text

ワンクリックデプロイ  101 http://bit.ly/vHXFbO

Slide 2

Slide 2 text

吉羽龍太郎 アジャイルコーチ http://www.ryuzee.com/

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Special  Thanks @katzchang 凄腕プログラマー @tomohn 凄腕エバンジェリスト

Slide 5

Slide 5 text

え?マジでマジで?

Slide 6

Slide 6 text

会場調査 •  全員起⽴立立してください •  ユニットテストを書いていない⽅方は着席 •  結合テストを⾃自動化していない⽅方は着席 •  継続的インテグレーションサーバを使っていな い⽅方は着席 •  デプロイを⾃自動化していない⽅方は着席 •  環境構築を⾃自動化していない⽅方は着席 最後まで起立されている方は 帰って大丈夫ですw

Slide 7

Slide 7 text

http://bit.ly/vPmiFJ 一日にしてならず

Slide 8

Slide 8 text

http://bit.ly/vj0b0v NNoo SSiillvveerr BBuulllleett† 

Slide 9

Slide 9 text

http://bit.ly/sygcE9 自分たちのプロセス は自分たちで進化さ せるしかない!

Slide 10

Slide 10 text

1.ビジネスをとりまく 環境の変化

Slide 11

Slide 11 text

IITT投資は業務効率化 から戦略実現へ

Slide 12

Slide 12 text

以前の競争 http://bit.ly/rioQDZ

Slide 13

Slide 13 text

現在の競争 競争の速度の変化

Slide 14

Slide 14 text

迅速な 意思決定 が必要 http://bit.ly/pccwAN

Slide 15

Slide 15 text

意思決定をもと に素早く 具現化する必要 http://bit.ly/r1ziWL

Slide 16

Slide 16 text

ビジネスモデルの賞味期限が短縮

Slide 17

Slide 17 text

変化への対応 “事前に綿密” にたてた計画を “長期間遵守” して大丈夫なのか?

Slide 18

Slide 18 text

変化への対応 “変化が起こる” ことを前提に “頻繁に軌道修正” することが必要 http://bit.ly/oX9ImQ

Slide 19

Slide 19 text

変化に対応できなけれ ばマーケットから 見捨てられる

Slide 20

Slide 20 text

価値がなくなれば滅びる http://bit.ly/qJg8EX

Slide 21

Slide 21 text

継続的な イノベーション の創発 http://bit.ly/nLACes

Slide 22

Slide 22 text

“イノベーションは「知」の創造プロセ スであり、知の創造は単に理論だけでは なく、実践を通して知識を磨き、知恵に するものである” “企業の優れた業績は研究開発投資の増 加に要因があるのではなく、組織の イノベーション・プロセスの質による” 野中郁次郎氏の発言要旨

Slide 23

Slide 23 text

http://www.slideshare.net/InnovationSprint2011/2011-‐‑‒6794551

Slide 24

Slide 24 text

プロセス イノベーション http://bit.ly/qpjFXr プロダクト イノベーション http://bit.ly/ornfUo

Slide 25

Slide 25 text

マインド イノベーション http://bit.ly/nrDcZf

Slide 26

Slide 26 text

コンウェイの法則 “OOrrggaanniizzaattiioonnss wwhhiicchh ddeessiiggnn ssyysstteemmss aarree ccoonnssttrraaiinneedd ttoo pprroodduuccee ddeessiiggnnss wwhhiicchh aarree ccooppiieess ooff tthhee ccoommmmuunniiccaattiioonn ssttrruuccttuurreess ooff tthheessee oorrggaanniizzaattiioonnss..” http://bit.ly/oIUrUI

Slide 27

Slide 27 text

2.継続的デリバリ

Slide 28

Slide 28 text

毎日何回も本番環境にデプロイで きているか? 顧客に頻繁に価値を届けられてい るか?

Slide 29

Slide 29 text

ワンクリックでデプロイできたと しても、リリースの意思決定に時 間がかかったら無意味! http://bit.ly/rZyM3H

Slide 30

Slide 30 text

XP 技術⾯面を⾼高める Scrum 価値あるものから継続的に 製品を届ける Lean 企業活動⾃自体の全体最適化 チーム マネー ジャ 経営者

Slide 31

Slide 31 text

繰り返し型の 開発 継続的 インテグレーション 継続的 デプロイ 継続的デリバリ 企業での価値創造 Strategic  Impact Adaptability  /   Agility

Slide 32

Slide 32 text

継続的デリバリとは何か? “継続的デリバリとはリリースのスケジュー ルをIITT部門が握るのではなく、ビジネス部門 が握るということだ。継続的デリバリを実装す るということは、全体のライフサイクルを通じ て常にソフトウェアが本番環境にリリース可能 であるということを意味する。すなわちどのビ ルドもボタン一発で、完全に自動化されたリ リースプロセスを通じて、秒とか分の時間で利 用者にリリース可能である、ということ だ。” JJeezz HHuummbbllee

Slide 33

Slide 33 text

http://bit.ly/tFrqbz 継続的デリバリ ユーザーとプロジェクトチームの間に 固いフィードバックループを作る

Slide 34

Slide 34 text

継続的デリバリ 継続的なフィードバックプロセスは、 競争優位性やムダの削減につながる http://bit.ly/uLQaml

Slide 35

Slide 35 text

継続的デリバリの8原則 ソフトウェアのリ リースやデプロイ のプロセスは繰り 返し可能であり信 頼性が高い必要が ある。 1

Slide 36

Slide 36 text

継続的デリバリの8原則 全てを自動化 する 2

Slide 37

Slide 37 text

継続的デリバリの8原則 難解なことや苦 痛なことを繰り 返し行い自動化 の方法を考える 3

Slide 38

Slide 38 text

継続的デリバリの8原則 全てをソース コード管理シス テムで管理する 4

Slide 39

Slide 39 text

継続的デリバリの8原則 完了は「リリー スされたこと」 を意味する 5

Slide 40

Slide 40 text

継続的デリバリの8原則 品質を作りこむ 6

Slide 41

Slide 41 text

継続的デリバリの8原則 すべての人にリ リースプロセス に対しての責任 がある 7

Slide 42

Slide 42 text

継続的デリバリの8原則 継続的に改�善 する 8

Slide 43

Slide 43 text

継続的デリバリの4プラクティス l バイナリは一度だけビルドする l すべての環境にデプロイするのに 完全に同一のメカニズムを使う l デプロイメントでスモークテスト を実施する l 何か問題が起こったらラインを止 める

Slide 44

Slide 44 text

ど の 断 面 で も     再 現 可 能 か ? http://bit.ly/uVQu5I

Slide 45

Slide 45 text

リリースした際に、前のバージョンに即座 に戻せるか?これはコードだけでなくデー タベース等も含む http://bit.ly/tgbmyr

Slide 46

Slide 46 text

DRY

Slide 47

Slide 47 text

Convention Over Configuration

Slide 48

Slide 48 text

Scrumとの関連性 •  多くの大規模組織は、ソフトウェアのデプロイ メントメソッドが貧弱であり、それ故にソフト ウェアを世に送り出すことが困難な状況にある。 •  SSccrruummは妨害事項リスト等を使うことで、妨害 事項を明らかはできるが、SSccrruumm自体ではそれ を解決できず、SSccrruummそれ自体はどのようにそ れを解決するかの指針も持ち合わせていない

Slide 49

Slide 49 text

Doneの定義 何ができたら 完了了なのかを 決める

Slide 50

Slide 50 text

Doneの定義 •  チームとして定めた「出荷可能な製品」を作成 するために実施しなければいけないことの⼀一覧。 •  例例えば、コードを書く、ユニットテストする、 統合テストをする、リリースノートを書く •  ストーリーでのDoneの定義、スプリント単位 でのDoneの定義、リリース単位でのDoneの 定義をすることを推奨。 •  Doneの定義はチームの成熟度度や時間に よって変わっていくが、Doneの定義 なくしてのScrumはあり得ない。

Slide 51

Slide 51 text

3.バージョン管理

Slide 52

Slide 52 text

ソースコードのバージョン管理理 •  いわずもがな。全ての起点はここにある •  コードの共同所有の原則への理理解 •  このソースコードは本番環境または開発環境な どで同じように動作しなければならない •  テストを書く習慣、コミット前に他のテストも 含めて通してからコミットする習慣

Slide 53

Slide 53 text

設定ファイルのバージョン管理理 •  環境によって異異なる設定値(接続先データベー ス情報など)が書かれた設定ファイルもバー ジョン管理理する •  開発環境⽤用、ステージング環境⽤用、本番環境⽤用 などに分けて定義し、容易易に切切り替え可能にす る •  本番環境に配置する際に、アプリケーションの 各所を書き換えなければ動作しないという状況 は避ける

Slide 54

Slide 54 text

バージョン管理は 開発者のしつけ http://bit.ly/utD8aA

Slide 55

Slide 55 text

4.テスト自動化

Slide 56

Slide 56 text

テ ス ト し て い な い も の を 目 を 瞑 っ て デ プ ロ イ し て は い け な い http://bit.ly/rAOG9h

Slide 57

Slide 57 text

清水の舞台から 飛び降りない http://bit.ly/tnB8i0

Slide 58

Slide 58 text

デプロイするたびに人手 で全体をテストするのは 無理 http://bit.ly/shZMnK

Slide 59

Slide 59 text

ITアーキテクト「機能テストの⾃自動化について考える」   より引⽤用 http://www.itarchitect.jp/print/?menu3=24601 テスト自動化の損益分岐点 は相当早期にある感覚

Slide 60

Slide 60 text

アジャイルでの品質の作りこみ Scrumの場合 Cancel Gift  wrap Return スプリント 2~∼4週間 返品 スプリントゴール スプリント バックログ 出荷可能な製品の 積み上げ プロダクトバックログ クーポン ギフト包装 クーポン キャンセル 24時間 単体テスト、結合テスト、 受け⼊入れテストがスプリン ト単位(もしくはリリース単 位)で⾏行行われる.

Slide 61

Slide 61 text

アジャイルでの品質の作りこみ スプリント終了了時には「テスト」が完了了.スプリントレ ビューで顧客のビジネス要件への適合性も確認できる http://www.flickr.com/photos/kakutani/2761992149/

Slide 62

Slide 62 text

アジャイルでの品質の作りこみ Scrumではフレームワークの定義のみで、テスト⾃自 動化については触れられていない.しかしアジャイル 開発においてはテスト⾃自動化は必須 ⼩小規模リリースのたびに⼿手 動でテストするとスプリン ト後半になるにつれてテス トコストが膨らむ ⾃自動化しないとソフトウェア規模に応じて、テスト⼯工数の占め る割合が増加していく(=価値への投資が減少)

Slide 63

Slide 63 text

【⾃自動と⼿手動】 機能テスト ストーリーテスト プロトタイプ シミュレーション 【⼿手動】※1 探索索的テスト シナリオテスト ユーザビリティテスト ユーザー受⼊入テスト アルファ版、ベータ版 【⾃自動化】 単体テスト コンポーネントテスト 【ツール】 パフォーマンステスト 負荷テスト セキュリティテスト 第1象限 第2象限 第3象限 第4象限 技術⾯面(技術的品質) ビジネス⾯面(ビジネス的品質) チ ー ム を ⽀支 援 製 品 を 批 評 テストの4象限 ※1  ATDD等では⾃自動化

Slide 64

Slide 64 text

第1象限  チームを⽀支援する技術⾯面のテスト テスト駆動開発などアジャイル開発の中⼼心。 第2象限  チームを⽀支援するビジネス⾯面のテスト 顧客の視点からのハイレベルの機能テストなど。 第3象限  製品を批評するビジネス⾯面のテスト ユーザー受⼊入テスト、探索索的テストなど。 第4象限  技術⾯面のテストを使った製品の批評 パフォーマンステスト、セキュリティテストなど。 テストの4象限 「アジャイルテスト  ―⾼高品質を追求するアジャイルチームにおけるテストの視点―」増⽥田聡⽒氏 http://codezine.jp/devsumi/2010/report/07/  より引⽤用

Slide 65

Slide 65 text

⾃自動化されたテストの要件 ⾃自動化されたテストは以下の条件を満たしている必要がある。 繰り返し可能  (Repeatable) 何回でも繰り返し実⾏行行できること。また実⾏行行ごとに結果が変わらないこと 独⽴立立性  (Independent) 環境や外部のコンポーネントに依存しないこと テストケースの実⾏行行順序に依存しないこと ⾃自⼰己検証  (Self  validation) テストが成功したか、失敗したかはプログラムが判断する。 (⼈人⼿手で判断しない) 簡単実⾏行行  (Easy) テストの準備に⼤大量量の時間や⼈人⼿手がかかるようにしない

Slide 66

Slide 66 text

【⾃自動と⼿手動】 機能テスト ストーリーテスト プロトタイプ シミュレーション 【⼿手動】 探索索的テスト シナリオテスト ユーザビリティテスト ユーザー受⼊入テスト アルファ版、ベータ版 【⾃自動化】 単体テスト コンポーネントテスト 【ツール】 パフォーマンステスト 負荷テスト セキュリティテスト 第1象限 第2象限 第3象限 第4象限 技術⾯面(技術的品質) ビジネス⾯面(ビジネス的品質) チ ー ム を ⽀支 援 製 品 を 批 評 ツール・⼿手法のマッピング(例例) TDD xUnit PMD,  CPD  … Jmeter WebScarab RatProxy ValGrind  … Selenium Cucumber Rspec FitNess  … CI推奨 CI推奨 CI必須 ⼀一部CI可能

Slide 67

Slide 67 text

テスト⾃自動化の進め⽅方 プロダクトバックログ テスト⾃自動化バックログ スプリント バックログ レガシーコードにおい て、製品コードの開発 をとめて自動化のみへ 投資するのは現実的に 難しいので、投資割合 をきめて、予めバック ログに組み込むことが 望ましい

Slide 68

Slide 68 text

問題修正にかかる時間 フェーズ 修正までの時間 要求や設計 5分 コードやユニットテスト 15分 結合テストやシステムテスト 1時間 ベータテスト 2時間 リリース後 1⽇日

Slide 69

Slide 69 text

5.継続的 インテグレーション

Slide 70

Slide 70 text

http://bit.ly/soiCFy 継続的インテグ レーションの導入� と利用促進の7ス テップ

Slide 71

Slide 71 text

1 ビルドサーバを 用意する http://bit.ly/rVAW90

Slide 72

Slide 72 text

http://bit.ly/rubXiA 2 夜間ビルドを 行う

Slide 73

Slide 73 text

3 夜間ビルド+ コミット時の ユニットテスト http://bit.ly/s3W9aF

Slide 74

Slide 74 text

4 メトリクスの取得 http://bit.ly/rYN42H

Slide 75

Slide 75 text

5 テストに対する信 頼性と依存性の確 立 http://bit.ly/rOloeO

Slide 76

Slide 76 text

http://bit.ly/sP6BvN 6 自動化された受け 入�れテスト+デプ ロイ自動化

Slide 77

Slide 77 text

7 継続的なデプロイ http://bit.ly/uc3x59

Slide 78

Slide 78 text

CIサーバの構築 •  プロジェクト初期の段階でコードがなくても構 築する •  コードのメトリクスや静的解析は初期から継続 的に実施する⽅方が効果がある •  常にグリーン(Jenkinsなら⻘青)の状態を保ち、エ ラーがある状態に慣れない •  常にグリーンに保つにはアトミックな単位での 作業、マイグレーションとの連携、チームのコ ミットに対する態度度が⽋欠かせない

Slide 79

Slide 79 text

Jenkinsでの例例

Slide 80

Slide 80 text

CIアンチパターン •  頻繁にSCMにコミットしない •  テストコードを書かない •  テストコードと製品コードを同時にコミットしない •  定時ビルドのみでコミットビルドがない・夜間ビルドしかない •  帰り際にコミットしてそのままCIの結果を⾒見見ずに帰る •  CIでテストを通すために⼿手作業の準備が必要 •  メインラインのみで⼤大きなブランチをCI対象にしていない •  様々な種類のテストをまとめて⾏行行っている •  ビルドの失敗に気付かない •  ビルドに失敗しても放置している

Slide 81

Slide 81 text

CIアンチパターン •  ビルドの失敗に気づいても、修正コード以外のコードをコミットす る •  何も変更更していないのにビルドが落落ちたり落落ちなかったりする •  頻繁にビルドが失敗しているので、失敗するのが普通だと思う •  CIからの通知メッセージが⼤大量量すぎる •  CIが落落ちても何も通知しない •  CIサーバのリソースが貧弱 •  ビルドが肥⼤大化して結果が出るまでに時間がかかる •  本番環境やステージング環境と⼤大幅に環境が異異なる •  コードの静的解析をCIで⾏行行わずに⼈人⼿手で⾏行行う •  CIサーバがおかしくなったときに直せる⼈人がいない •  ずっとCIでのチェック内容が変わらない、プロセスが変わらない

Slide 82

Slide 82 text

第1象限での⾃自動評価 プロジェクトの特性や要員構成等に応じて決める テスト件数と結果(単体、結合) PMD警告件数 Checkstyle警告件数 カバレージ

Slide 83

Slide 83 text

チーム活動の評価 コード⾏行行数 コミット時間 アクティビティ

Slide 84

Slide 84 text

66.マイグレーションの 利用

Slide 85

Slide 85 text

DBスキーマのバージョン管理理 データベースのスキーマの状態とリリース の状態を関連付けることによって再現可能 にする

Slide 86

Slide 86 text

既存のアプローチの問題 ü  sqlスクリプトファイルは管理理が煩雑 ü  sqlスクリプトは⾃自動実⾏行行に向かない ü  ロールバックやデータ移⾏行行の考慮もしづらい ü  複数のsqlスクリプトの実⾏行行順序の制御が難しい http://bit.ly/vbtqZc

Slide 87

Slide 87 text

問題の例例 SQLの実⾏行行順序によって状態が変わってしまう alter  table  users  add   column  lastlogin   datetime  after  name; alter  table  users  add   column  disabled   boolean  default  false   after  name; 1.sql 2.sql 1→2の順に実⾏行行すると…. 2→1の順に実⾏行行すると….

Slide 88

Slide 88 text

マイグレーション(PHPの場合)

Slide 89

Slide 89 text

データベースの変更更管理理 $  ls  -‐‑‒1 1301223401_̲addchangelogs.php 1313445291_̲addinformation.php 1317489252_̲addpriorities.php 1318776293_̲addprojects.php 1318889397_̲addremainingtimes.php 1320243212_̲addresolutions.php 1321049290_̲addsprints.php 1321509396_̲addschemamigrations.php 1322392147_̲fix_̲project_̲invalid_̲default_̲value.php 1322446269_̲add_̲action_̲name_̲to_̲log.php 1322993218_̲addstories.php 1323001299_̲addstorycomments.php 1323449303_̲addusers.php 1324059101_̲addtasks.php 1325101301_̲addteammembers.php 1326548301_̲addteams.php 1327491204_̲addwiki.php 前後関係は、ファイル 先頭の数字の⼤大⼩小で判 断される。 (規約)

Slide 90

Slide 90 text

マイグレーションの状態 mysql> mysql> mysql> mysql> mysql> select * from migration_version; +---------+ | version | +---------+ | 30 | +---------+ 1 row in set (0.08 sec) mysql> mysql> 現在30個⽬目のマイグレー ションファイルまで登録 済であることを指す

Slide 91

Slide 91 text

マイグレーション実⾏行行 #  最新のバージョンへ更更新 $  php  doctrine_̲cli.php  migrate #  指定したバージョンへ更更新 $  php  doctrine_̲cli.php  migrate  29   コマンド1つで最新のバージョンに更更新したり、 特定のバージョンに戻すことができる マイグレーションファイルをソースコードとしてバージョ ン管理理し、CIのビルド定義の中にマイグレーションコマン ドを組み込むことで、⾃自動的にDBの状態を連動させる

Slide 92

Slide 92 text

オープンソースのマ イグレーションツー ルは色々ある!

Slide 93

Slide 93 text

7.環境構築自動化

Slide 94

Slide 94 text

なぜ環境構築の⾃自動化が必要? ü そもそも時間がかかる ü 数が増えれば単純作業の繰り返し ü ⼈人⼿手による単純作業はミスを誘発 ü ミスした場合でも検知する仕掛けが本番障 害しかない ü ⼿手順書がメンテナンスされないことがある ü ⼿手順書の⼿手順の妥当性の評価が難しい ü ⼿手順の逆転により状態が変わりうる

Slide 95

Slide 95 text

ミドルや設定インストールの⾃自動化 いつでも クリーンな 動作環境を作れ るようにする http://bit.ly/vMHRjL

Slide 96

Slide 96 text

ミドルや設定インストールの⾃自動化 この自動化に よって後はア プリケーショ ンをデプロイ すればすぐ動 作する状態に する http://bit.ly/v30Zl7

Slide 97

Slide 97 text

ミドルや設定インストールの⾃自動化 本番環境と開発環境の各種 バージョンをあわせる http://bit.ly/ttwsmT

Slide 98

Slide 98 text

ミドルや設定インストールの⾃自動化 ミドルウェアのバージョ ンをあげる場合も、この 自動化機構を使って行う

Slide 99

Slide 99 text

仮想化と⾃自動化(Vagrant)

Slide 100

Slide 100 text

Vagrantのインストールと起動 $  sudo  gem  install  vagrant   $  sudo  vagrant  box  add  lucid32  h7p:// files.vagrantup.com/lucid32.box   $  sudo  vagrant  init   $  sudo  vagrant  up   わずか4ステップで、仮想イン スタンスが起動する!!!!

Slide 101

Slide 101 text

Vagrantファイルでの設定 Vagrantファイルで、ベース ボックス名やVirtualBoxの GUI表⽰示の有無、インスタン ス名、メモリ容量量、⾃自動実⾏行行 するChefのRecipeなどを指 定できる

Slide 102

Slide 102 text

Vagrantのプラグインでの拡張 SaharaによるSandbox機能の導⼊入 $  sudo  git  clone  h7ps://github.com/jedi4ever/sahara.git   $  cd  sahara   $  sudo  rake  build   $  cd  pkg   $  sudo  gem  install  ./sahara-­‐0.0.7.gem   Sandbox機能を使うことで、ミドルウェアの バージョンアップの検証や、構成の変更更の検 証を気軽に⾏行行えるようになる。

Slide 103

Slide 103 text

Sandboxモード ■sandboxモードに⼊入る(仮想マシンを再起動しても有効) sudo  vagrant  sandbox  on ■sandboxを開始時点にロールバックする sudo  vagrant  sandbox  rollback ■sandboxモードの終了了(commitしていないものは消える) sudo  vagrant  sandbox  off ■sandboxの内容を恒久的に反映 sudo  vagrant  sandbox  commit ■現在sandboxモードかどうかを確認する sudo  vagrant  sandbox  status

Slide 104

Slide 104 text

Chef/Chef-‐‑‒solo

Slide 105

Slide 105 text

Chefとは? •  Ruby製のシステム管理理ツール •  出来ること –  OSのパッケージのインストールや管理理 –  OSの設定やミドルウェアの設定 –  サービスの起動・停⽌止 –  クーロンの設定 •  特徴 –  Rubyでジョブや設定を記述する –  Chef⾃自体はクライアント/サーバモデル –  Chef-‐‑‒soloを使えばローカル単体で動作 –  Recipeが多数公開されている

Slide 106

Slide 106 text

バージョンを指定し てパッケージをイン ストールすることも 可能

Slide 107

Slide 107 text

Cookbook  (37signals)

Slide 108

Slide 108 text

Cookbook(opscode)

Slide 109

Slide 109 text

その他の選択肢としてPPuuppppeett等

Slide 110

Slide 110 text

8.デプロイ自動化

Slide 111

Slide 111 text

プロジェクト最初に、 ((デプロイするものが なくても))デプロイを 自動化する http://bit.ly/vd1Nin

Slide 112

Slide 112 text

プロジェクトのあ いだ、ずっとデプ ロイスクリプトを 使うことで、プロ セスがテストされ 続ける 開発環境・本番環 境問わず、同じ方 法でデプロイする http://bit.ly/u27Oiz

Slide 113

Slide 113 text

デプロイが失敗した場 合にロールバックでき るようにする http://bit.ly/vFzaU9

Slide 114

Slide 114 text

デプロイが途中で失敗 した場合、その先を手 動でやらない http://bit.ly/w34bFM

Slide 115

Slide 115 text

Capistrano Railsアプリのデプロイに利利⽤用されることが多いが、もちろんそ れ以外にも利利⽤用可能。SSHで接続し、サーバに対して⾊色々な操作 を⾏行行うことが出来る。

Slide 116

Slide 116 text

No content

Slide 117

Slide 117 text

capコマンド cap  deploy                               #  Deploys  your  project. cap  deploy:check                   #  Test  deployment  dependencies. cap  deploy:cleanup               #  Clean  up  old  releases. cap  deploy:pending               #  Displays  the  commits  since  your  last  deploy. cap  deploy:pending:diff     #  Displays  the  `̀diff'  since  your  last  deploy. cap  deploy:rollback             #  Rolls  back  to  a  previous  version  and  restarts. cap  deploy:rollback:code   #  Rolls  back  to  the  previously  deployed  version. cap  deploy:setup                   #  Prepares  one  or  more  servers  for  deployment. cap  deploy:symlink               #  Updates  the  symlink  to  the  most  recently  deployed  ... cap  deploy:update                 #  Copies  your  project  and  updates  the  symlink. cap  deploy:update_̲code       #  Copies  your  project  to  the  remote  servers. cap  deploy:upload                 #  Copy  files  to  the  currently  deployed  version. cap  deploy:web:disable       #  Present  a  maintenance  page  to  visitors. cap  deploy:web:enable         #  Makes  the  application  web-‐‑‒accessible  again. cap  develop                             #  Set  the  target  stage  to  `̀develop'. cap  invoke                               #  Invoke  a  single  command  on  the  remote  servers. cap  multistage:prepare       #  Stub  out  the  staging  config  files. cap  production                       #  Set  the  target  stage  to  `̀production'. cap  shell                                 #  Begin  an  interactive  Capistrano  session.

Slide 118

Slide 118 text

Webistrano

Slide 119

Slide 119 text

9.テクニック

Slide 120

Slide 120 text

ビルド(デプロイ)パイプライン

Slide 121

Slide 121 text

ビルド(デプロイ)パイプライン •  SCMへのコミットをトリガーにする •  開発者のリズムを維持するために、最初にユ ニットテストや⼀一部のスモークテストを⾏行行い素 早く開発者にフィードバックする •  時間のかかる結合テストや受け⼊入れテストは、 前⼯工程が正常だった場合のみに⾏行行う •  これによってムダな時間を使わないようにする •  ユーザビリティテストや探索索的テストのうち⾃自 動化できないものもプロセスとしてはパイプラ イン上に定義 •  最後にデプロイできれば、デプロイパイプライ ン

Slide 122

Slide 122 text

10.デモ

Slide 123

Slide 123 text

デモ •  Vagrant+Chef-‐‑‒soloによる環境構築 •  Doctrineによる簡単マイグレーション •  Capistrano・Webisitanoによるワンクリックデ プロイ •  Jenkins  +  Capistranoによるデプロイメントパ イプライン