はじめてのreleaseブランチ運用(svn編)

16

Click here to load reader

Upload: sho-takano

Post on 24-May-2015

4.217 views

Category:

Documents


1 download

DESCRIPTION

シンプルなreleaseブランチ運用についてのまとめ(2012/11/27版)

TRANSCRIPT

Page 1: はじめてのReleaseブランチ運用(svn編)

はじめての RELEASEブランチ運用 (SVN編)

高野将

Page 2: はじめてのReleaseブランチ運用(svn編)

コンテキスト

VCSはSubversion

大勢の開発メンバーがバシバシ開発、バグ修正

モジュール単位で随時リリースする必要あり

Page 3: はじめてのReleaseブランチ運用(svn編)

「いつ?」、「何を?」、「どのように?」リリースするか

運用ルール策定

Page 4: はじめてのReleaseブランチ運用(svn編)

いつ?

最も頻繁でも日次でリリースする

これを超えると、リリース作業のコストが高すぎる

リリースしたモジュール管理できるの? どのバグが直った?

どのフィーチャーが実装されている?

リリース作業の負荷は高い モジュール選定

出荷可能かどうか判定

必要なファイルのみ取り出す

単純なファイルコピー、アーカイブの時間

Page 5: はじめてのReleaseブランチ運用(svn編)

何を?

開発チームで選定する

リリースするモジュールの状態(実現できたフィーチャー、修正したバグ)を開発チームで管理する

開発チームの代表者がリリースモジュールを選定する

サブチームに分かれていれば、サブチームごとに代表者が取りまとめる

中途半端な状態の物はリリースしない

最低でもコンパイルが通るものを

Page 6: はじめてのReleaseブランチ運用(svn編)

どのように?

releaseブランチを活用する

releaseブランチのソース=リリース先のソースとなるよう同期を取る

開発メイン(trunk)からリリース対象モジュールをマージする

リリース先の環境に合わせてカスタマイズする

Page 7: はじめてのReleaseブランチ運用(svn編)

Subversionでのreleaseブランチ運用

releaseブランチ

Page 8: はじめてのReleaseブランチ運用(svn編)

releaseブランチ運用イメージ

trunk

release

A D E F

G

H J L K

M I C N B

Page 9: はじめてのReleaseブランチ運用(svn編)

releaseブランチ作成

trunkをコピーしてreleaseブランチを作成する

SVNはリポジトリー内の通しリビジョンなのでreleaseブランチ作成でもリビジョン番号が付加される

trunk

release

A

B

Page 10: はじめてのReleaseブランチ運用(svn編)

リリース先向けカスタマイズ

リリース先に合わせた変更をreleaseブランチにコミットする

ファイルパス、URL、環境変数、etc...

この段階でリリースが可能になる

リリースブランチをエクスポートするだけ

trunk

release

A

B C

Page 11: はじめてのReleaseブランチ運用(svn編)

開発が進む

開発ブランチであるtrunkにコミットされる

releaseブランチは変更されない

trunk

release

A

B C

D E F

Page 12: はじめてのReleaseブランチ運用(svn編)

releaseブランチへのマージ

trunkの変更を、「対象モジュール単位」でreleaseブランチにマージする

Subversionのマージ機能を活用する

releaseブランチでは、trunkの複数コミットがまとめられてコミットされるイメージになる

trunk

release

A

B

D E F

G C

Page 13: はじめてのReleaseブランチ運用(svn編)

trunk、releaseブランチの成長

対象モジュールは開発チームが選定するため、trunkのコミット内容とreleaseブランチへの反映が前後することもある

trunk

release

A

B

D E F

G C

H J L K

M I N

Page 14: はじめてのReleaseブランチ運用(svn編)

releaseブランチの利点

開発を止める必要がない trunkとreleaseはそれぞれ別々に成長する

trunkが壊れてもreleaseには影響しない

リリース先に合わせたカスタマイズは初回のみで良い リリース環境が複数あるなら、それぞれに対するブランチを作成するだけ

リリース先のコードがすぐに参照可能 ただし、正しく同期を行うことが大切

リリース先でコード修正は原則としてしない

修正したら即座にreleaseブランチに反映し、trunkに逆マージする

Page 15: はじめてのReleaseブランチ運用(svn編)

まとめ

Page 16: はじめてのReleaseブランチ運用(svn編)

まとめ

リリース作業は日次で区切り、リリース対象機能の状態を管理して行う

リリース作業はreleaseブランチを用いた運用を行う

releaseブランチではリリース先に合わせたカスタマイズを行う

releaseブランチへはリリース対象モジュール単位にtrunkからマージする

リリースブランチへのマージはVCSの機能で行う