Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Redmine + GitBucketで実現する Redmineでプルリクエスト

Redmine + GitBucketで実現する Redmineでプルリクエスト

redmine.tokyo の第16回勉強会 で発表したLTのスライドです。もしかしたら後日Qiitaでフォローエントリを上げるかもしれません。

Yuusuke KOUNOIKE

May 18, 2019
Tweet

More Decks by Yuusuke KOUNOIKE

Other Decks in Technology

Transcript

  1. 2019/5/18 redmine.tokyo 第16回勉強会 鴻池 祐輔 Redmine + GitBucket で実現する 「Redmine

    でプルリクエスト」 第14回パネルディスカッションへのアンサーとして 1
  2. ⾃⼰紹介 鴻池(こうのいけ) 祐輔 u 各種アカウント u Twitter: @ko_noike / GitHub,

    Qiita等: kounoike u Redmine歴: ちょっと古い2.xくらいの時代にそれなりに u 前々職時代に職場でRedmine+Subversionで委託先(Gr会社)と連携 u プラグイン10個くらい⼊れてたかな︖&複雑なワークフロー・カスタムフィールド u 外注→内製シフトに合わせてGitBucketに移⾏ u GitBucket歴: 使う側から開発側に u 職場での使⽤経験を元に貢献→開発側に(Scala覚えました) u 現在#2 コミッタ u 現職︓株式会社フューチャースタンダード u RedmineもGitBucketも使ってません 2
  3. GitBucket u https://github.com/gutbucket/gitbucket/ https://gitbucket.github.io/ u “A Git platform powered by

    Scala with easy installation, high extensibility & GitHub API compatibility” u GitHub のように Pull Request / Issue / Wiki を持つself hostedなWebアプリ u プラグインによる拡張が可能 u プラグイン例 u メール通知 / Gist / Pages / Emoji / 検索 / デスクトップ通知 / バックアップ u ファイルフォーマットごとのレンダリング u その気になればコア部分の動作をかなり操作可能 4
  4. redmine.tokyo#14 パネルディスカッション 「GitとRedmineをどのように連携するのが効果的か」 【使⽤状況】 u 楠川さん u 「GitLabと連携」といってもgitリポジトリ作成/管理ツールとしてしか使ってない u 川端さん

    u GitHub利⽤・Issue管理とPR管理を分離して使っている 【論点=そのまま結論︖】 u 「RedmineとGitHub/GitLabは住み分け」 【所感】 u 技術的に出来ていないことを運⽤⾯での対処ですり替えている u GitBucketならどうだろう︖ 5
  5. おさらい︓ GitHub等でのIssue/PRベース開発 8 print("Hello world!") print(1+1) ⽇本語化したい︕ Issue#1 対応したよ︕Close #1

    PR#3 print("こんにちは、世界︕") print(1+2) print("こんにちは、世界︕") マージ#4 マージと同時に Issue/PRをクローズ 計算式間違ってる︕ Issue#2 Issue: 開発の起点 PR: 開発の実体 リポジトリ: 開発成果の蓄積 Issue/PR/リポジトリの間での紐づけで 起点〜現状コードまでのトレーサビリティを実現 対応したよ︕Close #1 PR#4 print(1+2) マージ#3 並⾏開発 レビュー CI メリット
  6. 連携の真の課題は何か(1) →チケット発番⽅式の違い Redmine GitHub等 ProjA ProjB ProjC #1 #2 #3

    #4 #5 UserA/ProjA UserA/ProjB UserB/ProjA #1 #1 #1 #2 #2 システム全体で 統⼀発番 リポジトリ (プロジェクト) ごとに発番 11 ※IssueとPRは区別せず発番
  7. 連携の真の課題は何か(2) →番号記法の衝突 Redmine GitHub等 ProjA ProjB ProjC #1 #2 #3

    #4 #5 UserA/ProjA #1 #2 12 チケット→Redmine PR→GitHub ⇒番号記法が衝突 ソースコードリポジトリ print("こんにちは") #1対応の 修正 RM#1を 解決する PR#1︖ どっちの#1︖ Wiki 〜〜は#1に記載。 どっちの#1︖
  8. 連携の真の課題は何か(3) →GitHub側を修正できない u github.com / bitbucket.org / gitlab.com ⇒× SaaS

    u GitHub Enterprise ⇒× プロプライエタリ u GitLab@オンプレ ⇒× プラグインで出来ることが限定的 u GitBucket ⇒◎ オープンソース、プラグインの⾃由度が⾼い(本体機能の上書可) 13
  9. Redmine側で対応しようとすると… 〜これまでのアプローチ〜 Redmine GitHub等 ProjA ProjB ProjC #1 #2 #3

    #4 #5 UserA/ProjA UserA/ProjB UserB/ProjA #1 #1 #1 #2 #2 システム全体で 統⼀発番 リポジトリ (プロジェクト) ごとに発番 14 ※IssueとPRは区別せず発番 #2 #1 発番ルールの変更 ⇒根本から変更 GitHub等は 変更できない︕
  10. 今回のアプローチ GitBucket側がRedmine番号に合わせる Redmine GitBucket ProjA ProjB ProjC #1 #2 #3

    #4 #5 UserA/ProjA UserA/ProjB UserB/ProjA #1 #1 #1 #2 #2 システム全体で 統⼀発番 リポジトリ (プロジェクト) ごとに発番 15 ※IssueとPRは区別せず発番 #4 #1 発番ルールの変更 ⇒プラグインで (⼩細⼯)出来る︕ GitBucketなら プラグイン作成可能︕
  11. Redmine-GitBucket連携の実現 実現⽅針 u GitBucket⇔Redmineで相互に通信 u Redmine→GitBucket: Webhook suer/redmine_webhook u GitBucket→Redmine:

    REST API u 設定でRedmineプロジェクト-GitBucketリポジトリ紐づけ u Issue/PRはRedmineで作成し、番号をそろえてGitBucketにコピー u PRを表す専⽤トラッカーを⽤意 u 他はすべてIssueにする u GitBucket側ではIssue/PRを触らない u Redmine側で作成したもののミラーリングに徹する u GitBucketは⿊⼦に徹する(ことを⽬指す) 16 5/2に4.0対応︕ ⇒再検証…
  12. TODO/TBD TODO u GitBucket側でIssue/PR操作を防⽌する u JavascriptでUI封鎖︖ u GitBucketプラグインで操作を⽌める⽅法︖ u ForkしたリポジトリからのPRに対応する

    u Fork操作のためにGitBucketに⼊らなければならなくなる︖ or Redmineプラグイン開発︖ u Issue/PRのユーザをRedmine側に合わせる u GitBucket-Redmineユーザマッピング︖ u PR⽤トラッカーなどの設定の⾃動化 TBD u リポジトリビューワはどっちを使うべき︖ u PRの変更⾏へのコメント機能はどうする︖ 24
  13. 開発を進める上での課題 技術⾯以外 (私が)今はRedmineもGitBucketも使っていない u 実運⽤時の課題が想定できない – ご意⾒募集中︕ – お試し利⽤者募集中︕ u

    モチベーションが維持できない – ご感想・ご意⾒・フィードバック募集中︕ – 現在、副業可能な職場です︕ 25