Successfully reported this slideshow.

RedmineとGitとスクラム

50

Share

Upcoming SlideShare
Scrum with Redmine Backlogs
Scrum with Redmine Backlogs
Loading in …3
×
1 of 51
1 of 51

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

RedmineとGitとスクラム

  1. 1. 第4回shinagawa.redmine勉強会 RedmineとGitとスクラム おかもとたかし
  2. 2. アジェンダ  RedmineでGitを運用するコツ  ALMiniumによるスクラムの運用
  3. 3. Gitの特徴  分散型  やり直せるマージ、コミット  オフラインでもok  Subversionを共有リポジトリとして利用可能  リベースによるブランチの更新  高速  GitHub
  4. 4. やり直せるマージ・コミット $ svn update  コンフリクトが発生するとコードがぐちゃぐち ゃに  もう一度update前に戻したいけど時すでに遅 し updateの前にはフォルダのバックアップを取る 運用orz
  5. 5. Gitなら pull/mergeなどでぐちゃぐちゃになっても $ git reset --hard HEAD で元に戻せる!!pullの場合は、 $ git merge FETCH_HEAD でマージをやり直すことができる
  6. 6. オフラインでもコミット可能  出張先で  ちょっとカフェで休憩しながら  通勤電車の中で  回線状態が悪い海外との開発  トイレでもok(ex. 下痢気味のときなど)
  7. 7. Google Trends  Subversion/Mercurialに比べるとGitが頭一 つユーザが多い  ドキュメント・情報も多い
  8. 8. RedmineのGit対応  リポジトリビューの対応  コミットキーワードとチケットの対応付け  ブランチのグラフィカルな表示  Redmineとの認証の統合 (2.1~。2.0まではpatchが必要#4905)
  9. 9. HTTPの利用によるGitアクセス  HTTP(S)が通れば何処でもアクセス可能  Redmineのアカウントと統合可能  プロジェクトの設定でリポジトリの Read/Writeの設定が可能 ロール Read Write(push) 管理者 ○ ○ 開発者 ○ ○ ロールを作成する場合: Read: リポジトリの閲覧 報告者 ○ × Write: コミットの閲覧 匿名ユーザ ○(公開プロ × ジェクトのみ)
  10. 10. RedmineのGitの設定 SetEnv GIT_PROJECT_ROOT /var/opt/alminium/git SetEnv GIT_HTTP_EXPORT_ALL httpd.conf ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ <LocationMatch /git/> PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName Git # for Redmine Authentication RedmineDSN "DBI:mysql:database=alminium;host=localhost" RedmineDbUser "alminium" RedmineDbPass "alminium" RedmineGitSmartHttp yes Require valid-user </LocationMatch>
  11. 11. リポジトリの名前規約  プロジェクト名: hoge  リポジトリのフォルダ名:  hoge  hoge.server  hoge.client  hoge.doc
  12. 12. REDMINE+GIT運用のコツ
  13. 13. 共有リポジトリの作成 $ git init –-bare --share ■HTTPを利用する場合 $ git update-server-info $ mv .git/hooks/post-update.sample .git/hooks/post-update ※ロックを行うためのファイル管理 $ chown apache.apache –R . (RHEL系OSの倍)
  14. 14. 段階的に導入する  ちょっと使い難いSubversion  ブランチを活用せずに導入  設定やプッシュ、プル、マージに慣れる  中央リポジトリはSubversionでもok  ちょっと便利なSubversion  git resetで間違えたコミットを編集(プッシュ前)  フェッチ・リベース・マージで綺麗な履歴  ブランチを活用  単なるブランチとして活用(マージのみ利用)  リベースを利用した高度な運用
  15. 15. Redmine+Git運用のコツ リベースで綺麗な履歴を作る
  16. 16. リベースなしの場合 pull/fetch push pull/fetch push pullからpushの間に他のコミットが挟まれるとブランチのマージになる
  17. 17. リベースなしの場合 pullからpushの間に他のコミットが挟まれるとブランチのマージになる
  18. 18. pull/pushを繰り返すと… マージだらけに…
  19. 19. リベースで綺麗な履歴 push
  20. 20. リベースで綺麗な履歴
  21. 21. このままpushすると push pullからpushの間に他のコミットが挟まれるとブランチのマージになる
  22. 22. リベースする
  23. 23. リベースした $ git fetch $ git rebase FETCH_HEAD master fetch/rebase
  24. 24. プッシュ push
  25. 25. 履歴が直線!! 綺麗なコミット履歴ができる
  26. 26. Redmine+Git運用のコツ その他雑多なコツ
  27. 27. git push –fはやってはダメ git push –f は使用すべからず コミットの消失やリポジトリの不整合が発生 ×4 ここから先は パラレルワールド
  28. 28. 削除したコミットを共有リポジトリ へ反映させない(push –fの禁止) サーバ上のリポジトリディレクトリで実行 $ git config –-bool receive.denyNonFastforwards true (git init時に—shareオプションをつけても設定される)
  29. 29. ブランチ・タグの削除禁止 サーバ上のリポジトリディレクトリで実行 $ git config –-bool receive.denyDeletes true
  30. 30. Web画面からのリポジトリ作成 SCM Creatorプラグイン リポジトリ名
  31. 31. ブランチとチケットの関連付け  Redmine Git Branch Hook #xxxが含まれるブランチを関連するチケットに関連付け ブランチを #23 チケットに対応付け 生徒会は投 稿に返信で きる 1‘ 2’ 3’ story/#23 指定したブランチへ のマージで自動的に クローズ 1 2 3 4 5 master
  32. 32. Redmine Git Branch Hook  ブランチにコミットすると、自動的にコミットメ ッセージをチケットに追加  Gitクライアントへのインストールは不要 (Redmine側で関連付けを実行)  指定したブランチ(ex.master, releaseなど) へマージすると自動的にチケットをクローズ (GitHubのプルリクエスト相当の機能を実現)
  33. 33. トラブルシューティング  GitのURLにアクセスして何も表示されなく てもうろたえない http://redminehost/git/xxxx  リポジトリビューワにアクセスしてエラーが 出たら何かコミットしろ
  34. 34. pull/fetchでおかしくなったら リセットでマージ前に戻して再マージ $ git reset –-hard $ git merge FETCH_HEAD
  35. 35. ALMINIUMの紹介
  36. 36. ALMiniumの紹介  ALM+Redmineの合金=ALMinium  Git/Backlogsなど含め簡単インストール  Selenium/Titaniumに続くツールという意味  RedmineをGitHubライクに (Redcarpet Wiki Formatter/ブランチのマージ操 作によるチケットクローズによる疑似プルリク エスト)  Backlogsプラグインによるスクラムのサポ ート
  37. 37. Webサイトと画面
  38. 38. ALMiniumの概要 Gerrit Jenkins Redmine+Plugins Marcurial Git HTTPS(HTTP) Subversion Ruby/Passenger MySQL Apache CentOS/Ubuntu Page 38 アイコンは次のサイトで配布されているものですhttp://www.visualpharm.com/
  39. 39. ALMiniumのGit関連機能  Apacheへの設定の自動化とRedmineとのユーザ 連携  HTTPSによる便利でセキュアなアクセス  Webからのリポジトリの作成  Redmine Git Branch Hookによるブランチとチケ ットの対応付け  コミットの上書き禁止、タグ・ブランチの削除禁 止など、安全に使える設定
  40. 40. Gitポケットリファレンス  環境設定・Git入門  Windowsユーザーにも 優しく  コマンドリファレンスで 中級者もためになる  フック・ALMinium/Gitolite でリポジトリ管理者も納得  GitHub
  41. 41. チーとシート 見本
  42. 42. スクラム対応
  43. 43. 無駄をなくす 使わない機能 ほとんど使わない 機能 よく使う たまに使う
  44. 44. スクラムのおさらい 要件(バックログ)整理 スプリント計画 悩みを投稿できる 悩みを投稿できる 投稿に返信できる 投稿に返信できる Webサイトを公開する Webサイトを公開する 非公開にできる メールで通知する タスク レビュー・ スプリント実施 振り返り 悩みを投稿できる 投稿に返信できる Webサイトを公開する
  45. 45. Redmine Backlogsでの対応 要件(バックログ)整理 スプリント計画 悩みを投稿できる 悩みを投稿できる 投稿に返信できる 投稿に返信できる Webサイトを公開する Webサイトを公開する 非公開にできる メールで通知する タスク レビュー・ スプリント実施 振り返り 悩みを投稿できる 投稿に返信できる Webサイトを公開する
  46. 46. バックログの管理 チケットの粒度 チケット=バックログをストーリーポイントで管理
  47. 47. タスクボード
  48. 48. バーンダウンチャート
  49. 49. 集計とか
  50. 50. アジャイルのレベル  レベル4. 自己組織化  レベル3. フィードバック  スプリント毎のバックログの見直し  ベロシティの計測  CI  レベル2. 計測  ブランチ・マージ ALMinium  チケット化  タスクボード・バーンダウンチャート  スプリント計画ミーティング  レベル1. 共有  ソースコード  ストーリー/タスク  問題・課題  朝会・振り返り
  51. 51. ご清聴ありがとうございました!!

×