RedmineとGitとスクラム

19,790 views

Published on

RedmineとGitを組み合わせて使うノウハウとRedmineでスクラムを実現するRedmine Backlogsを紹介します

Published in: Technology
0 Comments
48 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
19,790
On SlideShare
0
From Embeds
0
Number of Embeds
5,128
Actions
Shares
0
Downloads
0
Comments
0
Likes
48
Embeds 0
No embeds

No notes for slide

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/gitSetEnv GIT_HTTP_EXPORT_ALL httpd.confScriptAlias /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 pushpullからpushの間に他のコミットが挟まれるとブランチのマージになる
  17. 17. リベースなしの場合pullからpushの間に他のコミットが挟まれるとブランチのマージになる
  18. 18. pull/pushを繰り返すと… マージだらけに…
  19. 19. リベースで綺麗な履歴 push
  20. 20. リベースで綺麗な履歴
  21. 21. このままpushすると pushpullから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/UbuntuPage 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. ご清聴ありがとうございました!!

×