UpsourceとYouTrackをHubってチームとプロジェクトを普通に一元管理するまで

プログラミングの仕事をチームでいい感じにやるための、JetBrainsというすごい会社が出しているツールを使おうとした話です。

概念をつかめていないのと、できること、できないことが混乱してだいぶハマってしまったので、結果的に通れた道筋を書いておく。

はじめにまとめるので、あとは日記です。

  • できること
  • たぶんできないこと
    • ビルトインHubに対して他の製品から連携させること
      • 例1:UpsourceのビルトインHubに対してローカルのYouTrackをHub連携させる
      • 例2:クラウド版YouTrackのビルトインHubに対してUpsourceをHub連携させる
    • クラウド版YouTrackをビルトインHub以外に対して連携させること
  • やるには
    • Hub入れる https://www.jetbrains.com/hub/
      • ここで適当にプロジェクトを作っておくといいのかな? その手順ではやっていないのでわからない。自分の場合はYouTrackとUpsourceにそれぞれ同名プロジェクトを作って、それがHub連携のときにいい感じにマージされた。
    • Standalone版のYouTrack入れる https://www.jetbrains.com/youtrack/download/
    • Upsource入れる https://www.jetbrains.com/upsource/
    • 共通のプロジェクトに対してYouTrackとUpsourceをつなげる
    • 追記
      • そもそもYouTrackとUpsource入れるときに、最初からビルトインじゃないHubを設定できるところがあったかも?
    • 4/23追記
      • 新しくプロジェクト作り直して、そうしたらYouTrackとUpsourceはつながったようだけど「Upsource統合がこのプロジェクトのために設定されていない」みたいなメッセージが表示されてコミットが引っ張ってこれなくていろいろやっててそれでもできなくて、ふと見たらいつのまにかできていた。?

日記です。

YouTrackはissueを管理するやつで、Upsourceはローカルで動くGitHubみたいなやつ(雑)。どちらもWindowsに入れてみたらわりと簡単に動かせたので、ソースコードなどを社外に置くことに対して何かしらのオーバーヘッドが生じうる会社員の方であれば試してみる価値があるのではないでしょうか。

それぞれRedmineGitHubと比べたときの優位性についてはなんともという感じですがそんなに癖もないし、JetBrains製IDEプラグインで連携したときの相性は気持ちよさそう。物理的に離れたひととチームしているときは、ちょっとした非同期疑似モブプログラミングみたいな感覚になれるのではと思った。

YouTrackはクラウド版もあってすぐに使える。というわけで、クラウドのYouTrackと、ローカルのYouTrackと、ローカルのUpsourceあたりを入れてみて動かしてみた。バックアップとかめんどいからYouTrackはクラウド上でいいよなあ、と思いながらいじっていたが、のちのち手こずった。

この3つを並行していじるとそれぞれにいちいちアカウントを用意するのはめんどくさいなとすぐ気づく(実際は2つになるけど)。Hubというシングルサインオン的な統合ダッシュボード的な何かがあることは目に入ってくるので、これでおそらくうまくやれるんやろと予想。メニューや英語のマニュアルを流し読みしながら、ローカルのUpsourceをクラウドのYouTrackに付いているHubに統合しようと試みたり、うまくいかないので、3C2の組み合わせでごちゃごちゃと試して、エラーしかでなかった。労。

設定するときにスタンドアローンのHubのURLを入れろと(いま思えば確かに)書いてあって、英語のドキュメントや日本語の画面(どの製品もちゃんと日本語化されていてよい)を見回しながら、なんとなく「そのためのHub」が必要なのでは、と感づいてきた。つまりYouTrackやUpsourceとは別に、Hubという名のHubを入れるのだ。Hubが付いてきているわけなので、Hubという製品があるはずだ、というわけで案の定ありました。

逆に、YouTrackやUpsourceにはビルトインのHubが付いている、ということ。つまりこれはおまけHubということで理解したが、合っているかは知らない。ここまでわかると、クラウド版YouTrackのHub連携ページでは「ここではそれ(おまけじゃないHubに対して連携をかけること)はできないぜ」と明記されていることが理解できる。

クラウドのYouTrackのビルトインのHubがおまけじゃないHubだったら楽なのになあ(というかHubだけホスティングでもいい)、という感じだけれど、Hubをローカルに入れて、それに対してローカルのUpsourceとローカルのYouTrackから連携をかけたら、無事、思い描いていた姿になった。既存のメンバーやプロジェクトのコンフリクト(名前やキーの重複)も、マージの道をわかりやすく示してくれていい感じ。そんなにローカル(というかオンプレミス)に置きたいわけではないけれど、そのへんのセキュリティポリシー自体が未定な組織にはちょうどいいかという感じで。バックアップや復元がどんな感じでやれるのかは今後試したい。

だいぶ思い描きに近づいたけれど、まだYouTrack上でUpsourceを見れない、というか、issueに紐づくコミットを取ってくるところまではできていない。これは「How to connect」としっかりヘルプにリンクされているので、そのとおりやってみる。

最初触ってたときは、YouTrackとバージョン管理を紐付けるにはGitHubやGitLabをかませないといけないように読めた(どうやらUpsource統合とVCS(GitHub等)統合が別概念のようだ)けれど、さすがにローカルに一式取り揃えてつながらないということもないだろうと期待。ここにきてやっと「external Hub service」の「external」がつかめてきた。ローカルで動かしている「Hub」なわけですが、YouTrackのビルトインのHubやUpsourceのビルトインのHubではない、由緒正しいHubということなのでしょう(?)。でもGitHubとかもこれに含められるのか?わからん。

すでにいじった(共通のプロジェクトがある)YouTrackとUpsourceをHubにマージしたことにより、マージ手順はすでに終わっていたという認識。そしてUpsourceからissueの情報を拾えているようだけど、YouTrackのVCSログに何やっても出てこないアガガガガ。「Upsource統合設定」も「項目が見つかりません」でつながっていない感じ。

とりあえずここまで。別のプロジェクト作り直したほうがいいかもしれない。

RedmineGitHubでいいじゃないかといわれればそうだし、これだけJetBrainsに依存するのもどうかというところだけれど、ドラゴン系の武器と防具で揃えたい的な気分で、JetBrains製IDEをメインウェポンにこのあたりを取り揃えて付加効果を狙うのはありかもしれませんという感触。

この日記の動機としては、YouTrackやUpsource、あるいはそれらのプラグイン、個々の情報はすばらしいものがすでに存在していて、それをなぞっても仕方ないなというところだったのだけれど、このいま書いたことに関しては、すくなくとも自分がこの迂回と逡巡を回避できるだけの日本語情報へのアクセスの整備はネット上でされていなかったのかなといったところで、いいネタができたと思ったので。こういうのはいまどきはQiitaに書くのがもだーんなのかとも思ったけれど、どの角度から見ても日記なので何も問題はなかった。