ハウテレビジョンブログ

『外資就活ドットコム』『Liiga』『Mond』を開発している株式会社ハウテレビジョンのブログです。

YouTrack から GitHub Projects へのスムーズな移行

この記事は HowTelevision Advent Calender 2023 の4日目の記事です。3日目は川原さん (id:rrih)の Groonga から Elasticsearch への移行について - ハウテレビジョンブログ でした。

qiita.com

はじめまして、ハウテレビジョンで外資就活ドットコムのPdMをしてます伊達 (id:s-date) といいます。

さて、早速この記事の背景から説明させていただきます。

弊社は新しいことが大好きな人が多いので色んなツールが導入されています。一方で、2重管理だったり、この権限は誰が持ってるの!?だったりの問題が発生していました。

そこで、出来るだけGitHubでできることはGitHubに統一していこう!ということになり、記事の表題になっている通りタスク管理として使っていたYouTrackもGitHub Projectsに移行する運びとなりました。

この記事では移行した時の手順とGitHub Projectsに移行してみての感想を書いていこうと思います。GitHub Projectsへの移行にお困りの方の手助けに少しでもなれば幸いです。

手順

移行までの手順を大まかにまとめると以下の4点です。

  1. issueをエクスポートする
  2. issueをインポートする
  3. プロジェクトを作成・設定する
  4. issueをプロジェクトへ紐付けする

概要を説明すると、CSVにエクスポートしてGitHubで受け取れるようにCSVを少し加工してからインポート、作ったプロジェクトに紐付けるという流れです。

詳細についてそれぞれ説明していきます。

1. issueをエクスポートする

まずはYouTrackのissueをCSVにエクスポートします。

いきなり注意点なのですがインタフェースでYouTrack Liteをアクティブにしていると、何故かエクスポートするためのボタンが表示されません。

右上の自分のアイコンから「外観>インターフェース」のところを確認しておきましょう。

課題を一覧で出すページ(/youtrack/issues)にエクスポートするボタンがあるのでこちらからCSVへエクスポートを行います。

これで貼った画像ですと70件のissueがCSVに吐き出されます。

2. issueをインポートする

先ほどエクスポートしたCSVですが、付与されていたパラメータ全てが書き出されています。

カスタムフィールドをたくさん使っていた場合はカラムがたくさん出来てると思います。

ですが、残念ながらそれら全てをGitHubに持っていくことは出来ません。

インポートする前にCSVを以下のカラムに加工する必要があります。

  • number
  • title
  • createdAt
  • updatedAt
  • labels
  • assignees(GitHubのアカウント名が必要なのでYouTrackのアカウント名だと引き継げない。いっそのことなくても良い)
  • body

(他にもあると思うけど完全把握はできてないです)

この後インポートするために使うツールにテストのCSVがあるのでこれを参考にしましょう!

https://github.com/gavinr/github-csv-tools/tree/master/test

最低限移行したいのはtitle, labels, bodyだと思うのでこのカラム以外を削除してしまってもいいと思います。

さて、CSVの加工が終わったらようやくGitHubへのインポートを行います。

github-csv-toolsのインストール

まずgithub-csv-toolsをインストールします。

$ npm install -g github-csv-tools

名前の通りGitHubにcsvをインポートしたりエクスポートしたりできる便利ツールです。

GitHubのトークン設定

インポートを行う際にGitHubのトークンが必要となります。エラーが出てから知りました。

こちらからトークンを設定しコピーしておきましょう。

任意のリポジトリへインポートする

ようやくインポートのための準備が整ったのでインポートを開始します。

あらかじめどこのリポジトリにissueを入れておくか決めておきましょう。

以下のコマンドでインポートを開始します。

% githubCsvTools ~/issues.csv

この後、リポジトリ名やUser名 または organization名、トークンが求められるので入力していきます。

こんな感じで一気にオプションで指定することもできます。

% githubCsvTools ~/issues.csv -t {設定したトークン} -r {リポジトリ名} -o {organization名}

以下が表示されたらインポート成功です。

Created 27 issues, and had 0 failures.
❤ ❗ If this project has provided you value, pleasestar the repo to show your support: ➡ https://github.com/gavinr/github-csv-tools

実際に任意のリポジトリでissueを確認してみましょう!

3. プロジェクトを作成・設定する

GitHubを開き、Projectsタブ>New projectのボタンを押すことでプロジェクトの作成ができます。

テンプレートを選択後、フィールドのカスタマイズ・カンバンの設定など自分達が使いやすいように設定していきましょう。

4. issueをプロジェクトへ紐付けする

プロジェクトが完成したら先ほどインポートしたissue達をプロジェクトへ紐づけていきます。 方法は2通りあります。後者がおすすめです。

プロジェクトから紐づけるissueを選択する

以下の

Add item from repository

を選択します。

表示された画面でissueをインポートしたリポジトリを選択するとissueがズラリと並びます。 紐付けたいissueにチェックを入れて

Add selected items

で紐付けが完了です。 注意点として、検索窓ですが何故だかわかりませんが、漢字やひらがなで検索するとissueが見つかりませんでした。カタカナやアルファベットでは検索が出来たのでそちらで検索しましょう。

issueから紐づけるプロジェクトを選択する

こちらがおすすめの方法です。 リポジトリのページからissuesを開きます。 issueにチェックを入れて

Projects

から先ほど作成したプロジェクトを選択します。 前者の方法より圧倒的に簡単で手間が少ないのでおすすめです!

これで紐付けが完了しました。あとはカスタムフィールドの値をissueに設定したりの作業で、移行完了となります。お疲れ様でした。

移行してみての感想

良かった点

  • issueにPRを紐付けることができる→アイコンでPRの状態を確認できるのが良い
    • openかどうか,マウス上に持っていくとapproveされてるかもわかる!
  • カスタムラベルを複数スイムレーンに出せるのが良い(pointと実績がみれる)
  • youtrackと比較して不便が多いわけではない、慣れれば良さそう

まだ、うーんとなっている点

  • ワークフロー設定しないと不便なところがある
    • スプリントを跨ぐときにステータスがDONEでないものを自動で次スプリントに移行したい
    • カスタムフィールドの初期値設定
  • youtrackと違って画面の縦の表示領域が狭い
  • 親子関係をどう表現するか、Milestoneが良さそう?
  • バーンダウンチャートのカスタマイズ方法がわからない…

今後

まだ移行したばかりでGitHub Projectsを使いこなせているわけではないので少しずつできることを増やして快適にしていこうと思います。 新たな発見、便利な設定が見つかったらまた投稿します。