SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Redmine + GitLab 
マージベース開発プロセス 
株式会社アピリッツ 島田慶樹
2 自己紹介 
• RailsでのWebシステム開発6年くらい 
• Apache Cassandraの導入 
• 現在はScala Playframawork
プロジェクト概要 
3 
• Webサービスの新規開発(SI案件) 
• 開発メンバー 6名前後(Rails初心者含む) 
• 設計からC/Oまで数ヶ月
4 ツールまわり
5 Redmine 
• お客様参画プロジェクト 
• 課題管理(チケット) 
• ドキュメンテーション(wiki) 
• 開発者専用プロジェクト 
• タスク管理(チケット) 
• ドキュメンテーション(wiki)
6 GitLab 
• リポジトリホスティング 
• gitアクセス権限管理 
• マージリクエスト 
• ブランチ管理
7 Jenkins 
• 開発ルールとしてRSpec必須化 
• メインラインとマージリクエストの 
2プロジェクト
開発サイクル 
8 
1. 機能ごとにチケット起票 
2. 開発者にアサイン 
3. トピックブランチで開発 
4. リポジトリにプッシュしてマージリクエスト 
5. マージ担当者のピアレビュー、マージ
9 チケット駆動開発
10 ブランチ戦略 
topic 1 
develop 
master 
merge 
request! 
release!
11 マージリクエスト
12 マージリクエスト 
 
reviewee 
reviewer 
  
 
 
 
マジリク
マージリクエスト 
13 
メンバーの中から相手を1人選んで 
マージリクエストを投げる 
• 関連する機能を作ってる人 
• 内容について相談できる人
14 マジリクのルール 
業務で行う開発の場合、マージリクエストは 
! 
! 
では済まされない
15 OSSとの違い 
Pull Request 
コードオーナー 
コントリビューター 
LGTM! 
オミゴト!
16 マジリクのルール 
• マージリクエストは自分以外の開発者に 
アサインする 
• マージリクエストを依頼するチケットを 
作成する 
• チケットに、実装した機能を確認する手順を 
簡単に記述する
17 確認手順チケット
18 マジリクのルール 
• アサインされた開発者は下記の内容を確認し、 
問題がなければマージを実施する。問題があれば差し戻す 
• テストがついているか、Jenkinsで 
そのテストがパスしているか 
• 手順どおりに機能するか 
• コードのフォーマットや内容に不備がないか 
• メソッドの長さ、ネストの深さなど
評価
20 振り返り - keep 
• developブランチのコードを 
常に動作確認済みの状態に保つことができた 
• マジリクを分担することにより、 
他のメンバーのノウハウを吸収できた
振り返り - problem 
21 
• 不具合対応や微調整の時期になると、 
マジリクの作成・実施が重くなってきた 
• 一部のメンバーにマジリクの負担が 
集中した
22 振り返り - try 
• 開発のフェーズにあわせて 
マジリクの運用ルールを調節する 
• 開発者用プロジェクトをRedmineから 
GitLabのissue, wikiに移行 
※お客様参画プロジェクトはそのまま
23 まとめ 
• GitLabによるマジリクベースの開発で 
結合テストを開発プロセスに織り込む 
• RedmineとGitLabは機能がダブるので 
棲み分けに工夫が必要

Weitere ähnliche Inhalte

Was ist angesagt?

マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgitTakafumi ONAKA
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)Wataru NOGUCHI
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
Metahub for github
Metahub for githubMetahub for github
Metahub for githubSuguru Oho
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話mdome
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門kazuki kuriyama
 
Dockerの事例紹介
Dockerの事例紹介Dockerの事例紹介
Dockerの事例紹介Hiroki Endo
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろうGitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろうNobuhiro Ueda
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいzaru sakuraba
 
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回NaohiroHamada
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理Masafumi Yokoyama
 
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTDaisuke Ikeda
 
【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用Reimi Kuramochi Chiba
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
tweleve-factor-app_and_enterprise
tweleve-factor-app_and_enterprisetweleve-factor-app_and_enterprise
tweleve-factor-app_and_enterpriseNaoto TAKAHASHI
 

Was ist angesagt? (20)

マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
 
GitLab Prometheus
GitLab PrometheusGitLab Prometheus
GitLab Prometheus
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
 
Dockerの事例紹介
Dockerの事例紹介Dockerの事例紹介
Dockerの事例紹介
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろうGitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したい
 
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
Fcp
FcpFcp
Fcp
 
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
 
【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
tweleve-factor-app_and_enterprise
tweleve-factor-app_and_enterprisetweleve-factor-app_and_enterprise
tweleve-factor-app_and_enterprise
 
Amazon ECSとDevOps
Amazon ECSとDevOpsAmazon ECSとDevOps
Amazon ECSとDevOps
 

Andere mochten auch

少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティスCake YOSHIDA
 
Redmineはキャズムを超える -日経SYSTEMS寄稿の思い-
Redmineはキャズムを超える -日経SYSTEMS寄稿の思い- Redmineはキャズムを超える -日経SYSTEMS寄稿の思い-
Redmineはキャズムを超える -日経SYSTEMS寄稿の思い- Makoto SAKAI
 
Redmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッションRedmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッションTomohisa Kusukawa
 
Redmineのスマホアプリ RedminePM
Redmineのスマホアプリ RedminePMRedmineのスマホアプリ RedminePM
Redmineのスマホアプリ RedminePMproject mode, Inc.
 
Redmine.tokyo 07 open_discussion
Redmine.tokyo 07 open_discussionRedmine.tokyo 07 open_discussion
Redmine.tokyo 07 open_discussionJun Naitoh
 
Redmine 260 300_new_feature
Redmine 260 300_new_featureRedmine 260 300_new_feature
Redmine 260 300_new_featureJun Naitoh
 
Redmine.tokyo 07 questionnaire
Redmine.tokyo 07 questionnaireRedmine.tokyo 07 questionnaire
Redmine.tokyo 07 questionnaireJun Naitoh
 
Rbpdf gem library
Rbpdf gem libraryRbpdf gem library
Rbpdf gem libraryJun Naitoh
 
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へakipii Oga
 
講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターンHidehisa Matsutani
 
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Sho Douhashi
 
灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?ishikawa_mizuki
 
チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性 チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性 Makoto SAKAI
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with PythonTakuro Wada
 
怖くない? オープンソースへの貢献
怖くない? オープンソースへの貢献怖くない? オープンソースへの貢献
怖くない? オープンソースへの貢献ishikawa_mizuki
 
Redmine tokyo #13 LT
Redmine tokyo #13 LT Redmine tokyo #13 LT
Redmine tokyo #13 LT Asako Yanuki
 
20171117 redminetokyo13
20171117 redminetokyo1320171117 redminetokyo13
20171117 redminetokyo13Yukiya Hayashi
 

Andere mochten auch (17)

少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス
 
Redmineはキャズムを超える -日経SYSTEMS寄稿の思い-
Redmineはキャズムを超える -日経SYSTEMS寄稿の思い- Redmineはキャズムを超える -日経SYSTEMS寄稿の思い-
Redmineはキャズムを超える -日経SYSTEMS寄稿の思い-
 
Redmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッションRedmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッション
 
Redmineのスマホアプリ RedminePM
Redmineのスマホアプリ RedminePMRedmineのスマホアプリ RedminePM
Redmineのスマホアプリ RedminePM
 
Redmine.tokyo 07 open_discussion
Redmine.tokyo 07 open_discussionRedmine.tokyo 07 open_discussion
Redmine.tokyo 07 open_discussion
 
Redmine 260 300_new_feature
Redmine 260 300_new_featureRedmine 260 300_new_feature
Redmine 260 300_new_feature
 
Redmine.tokyo 07 questionnaire
Redmine.tokyo 07 questionnaireRedmine.tokyo 07 questionnaire
Redmine.tokyo 07 questionnaire
 
Rbpdf gem library
Rbpdf gem libraryRbpdf gem library
Rbpdf gem library
 
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
 
講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン
 
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
 
灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?
 
チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性 チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with Python
 
怖くない? オープンソースへの貢献
怖くない? オープンソースへの貢献怖くない? オープンソースへの貢献
怖くない? オープンソースへの貢献
 
Redmine tokyo #13 LT
Redmine tokyo #13 LT Redmine tokyo #13 LT
Redmine tokyo #13 LT
 
20171117 redminetokyo13
20171117 redminetokyo1320171117 redminetokyo13
20171117 redminetokyo13
 

Ähnlich wie Redmine + gitlab: merge base development

The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsKoichiro Ohba
 
本番環境で使える実行コード記録機能
本番環境で使える実行コード記録機能本番環境で使える実行コード記録機能
本番環境で使える実行コード記録機能mametter
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングShin Matsumoto
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
1_各Atlassian製品の紹介
1_各Atlassian製品の紹介1_各Atlassian製品の紹介
1_各Atlassian製品の紹介Ricksoft
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うかYutaka Tachibana
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424guest17bfe2
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424龍一 田中
 
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??griddb
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudKazuki Aranami
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywordsuupaa
 
アセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみるアセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみるRYUTARO OSAFUNE
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.jsRendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.jsMasahiko Tachizono
 
Scala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscalaScala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscalaKazuhiro Sera
 
Draft: Observability, Service Mesh and Microservices
Draft: Observability, Service Mesh and MicroservicesDraft: Observability, Service Mesh and Microservices
Draft: Observability, Service Mesh and MicroservicesTaiki
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaShigeru Hanada
 

Ähnlich wie Redmine + gitlab: merge base development (20)

The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
 
本番環境で使える実行コード記録機能
本番環境で使える実行コード記録機能本番環境で使える実行コード記録機能
本番環境で使える実行コード記録機能
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
1_各Atlassian製品の紹介
1_各Atlassian製品の紹介1_各Atlassian製品の紹介
1_各Atlassian製品の紹介
 
Shimane2008
Shimane2008Shimane2008
Shimane2008
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うか
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
 
CKAN日本語化班
CKAN日本語化班CKAN日本語化班
CKAN日本語化班
 
Elasticsearch at Makuake
Elasticsearch at MakuakeElasticsearch at Makuake
Elasticsearch at Makuake
 
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
アセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみるアセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみる
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.jsRendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
 
Scala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscalaScala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscala
 
Draft: Observability, Service Mesh and Microservices
Draft: Observability, Service Mesh and MicroservicesDraft: Observability, Service Mesh and Microservices
Draft: Observability, Service Mesh and Microservices
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
 

Redmine + gitlab: merge base development

  • 1. Redmine + GitLab マージベース開発プロセス 株式会社アピリッツ 島田慶樹
  • 2. 2 自己紹介 • RailsでのWebシステム開発6年くらい • Apache Cassandraの導入 • 現在はScala Playframawork
  • 3. プロジェクト概要 3 • Webサービスの新規開発(SI案件) • 開発メンバー 6名前後(Rails初心者含む) • 設計からC/Oまで数ヶ月
  • 5. 5 Redmine • お客様参画プロジェクト • 課題管理(チケット) • ドキュメンテーション(wiki) • 開発者専用プロジェクト • タスク管理(チケット) • ドキュメンテーション(wiki)
  • 6. 6 GitLab • リポジトリホスティング • gitアクセス権限管理 • マージリクエスト • ブランチ管理
  • 7. 7 Jenkins • 開発ルールとしてRSpec必須化 • メインラインとマージリクエストの 2プロジェクト
  • 8. 開発サイクル 8 1. 機能ごとにチケット起票 2. 開発者にアサイン 3. トピックブランチで開発 4. リポジトリにプッシュしてマージリクエスト 5. マージ担当者のピアレビュー、マージ
  • 10. 10 ブランチ戦略 topic 1 develop master merge request! release!
  • 12. 12 マージリクエスト  reviewee reviewer      マジリク
  • 13. マージリクエスト 13 メンバーの中から相手を1人選んで マージリクエストを投げる • 関連する機能を作ってる人 • 内容について相談できる人
  • 15. 15 OSSとの違い Pull Request コードオーナー コントリビューター LGTM! オミゴト!
  • 16. 16 マジリクのルール • マージリクエストは自分以外の開発者に アサインする • マージリクエストを依頼するチケットを 作成する • チケットに、実装した機能を確認する手順を 簡単に記述する
  • 18. 18 マジリクのルール • アサインされた開発者は下記の内容を確認し、 問題がなければマージを実施する。問題があれば差し戻す • テストがついているか、Jenkinsで そのテストがパスしているか • 手順どおりに機能するか • コードのフォーマットや内容に不備がないか • メソッドの長さ、ネストの深さなど
  • 20. 20 振り返り - keep • developブランチのコードを 常に動作確認済みの状態に保つことができた • マジリクを分担することにより、 他のメンバーのノウハウを吸収できた
  • 21. 振り返り - problem 21 • 不具合対応や微調整の時期になると、 マジリクの作成・実施が重くなってきた • 一部のメンバーにマジリクの負担が 集中した
  • 22. 22 振り返り - try • 開発のフェーズにあわせて マジリクの運用ルールを調節する • 開発者用プロジェクトをRedmineから GitLabのissue, wikiに移行 ※お客様参画プロジェクトはそのまま
  • 23. 23 まとめ • GitLabによるマジリクベースの開発で 結合テストを開発プロセスに織り込む • RedmineとGitLabは機能がダブるので 棲み分けに工夫が必要