uniface.hub

ユニフェイスの開発者ブログ


Title GitHub にまとめて Issue を取り込みたい人の軌跡
  • 2022年12月26日
  • 岡田梨絵
GitHub にまとめて Issue を取り込みたい人の軌跡

こんにちは、岡田です。
今日は開発の進捗管理をするにあたって、GitHub を活用したい!を起点にした、「GitHub にまとめて Issue を取り込みたい」私の軌跡を綴ります。

そもそもどうして?

簡単にしか調べてないので、アレなんですが、どうやら GitHub でのプロジェクト管理はどうやら Issue ベースのご様子。
なので進捗管理をする前に、まずは開発が必要な機能たちを Issue 単位にして、リポジトリに取り込まないとな~~~となったわけです。
とはいえ、1 件 1 件画面から登録するのは非常~~~っに面倒くさい。
タイトル書いて、説明書いて、ラベルに、マイルストーンに担当者に……考えただけでも心が折れるってもんです。

ここは一発どーんと CSV 取り込みとかできんのか!
ということでいろいろ調べてみました。

本題

GitHub で Issue の画面を舐めるように確認しましたが、インポートもエクスポートもメニューは無いっぽいですね。
どうしたらいいものか……

調べてみると、Issue を CSV で取り込むためには github-csv-tools というツールが必要らしいことが判明。
なるほど。
npm コマンドでインストールできるらしいのでさっそく。

npm install -g github-csv-tools

インストールが完了したら、githubCsvTools <CSVファイルのパス> コマンドを実行すればインストールできるらしい。

ふむふむ……

ところで、どんなフォーマットで CSV 作ればいいのよ!!

…………なるほどね(˘ω˘)
インポートする前に、まずはエクスポートしてみようぜ!

Issue をエクスポートする

まずは指定のリポジトリから Issue をエクスポートします。
コマンドはいたってシンプル。

githubCsvTools

オプションの指定で、ファイル名つけたり、全リポジトリからエクスポートしたりできるらしいです。
詳細は こちら(github-csv-tools)

TokenUser or organizationRepositoryをそれぞれ入力して、実行すると、なるほどエクスポートされました!
今回はダウンロード先を特に指定していないので、当該リポジトリの直下にエクスポートされてきましたね。

ちなみに。。。
備忘録的にアクセストークンの作成についてのリンクも貼っておきます。
個人アクセストークンを使用する
(たまにしかやらんので、忘れてしまって調べ直した…)

おっけ、さっそく開いてみる!

エクスポートしたCSVファイル

なるほどなるほど……
設定したい内容は全部書けそうな感じ!いいですねぇ~。

Issue を作る時にうっかりタイトルだけで作成しちゃったけど、コメントを入力したら body の列に表示されるのかな?
これはインポートの時に試して確認してみます。

Issue をインポートする

さてさて、フォーマットも分かったし、それではさっそく取り込んでみます!

インポートしたいCSVファイル

この内容で、先ほどのコマンド githubCsvTools <CSVファイルのパス> を実行です。

……エラーでた。

Error
RequestError [HttpError]: Invalid request.

For 'properties/milestone', "TestMilestone" is not an integer or null.

エラー内容を読んだ感じ、マイルストーンの指定は整数じゃないといけないようですね…。

では Milestone の列を 1 に修正して、再チャレンジ。

……エラー。

Error
RequestError [HttpError]: Invalid request.

For 'properties/milestone', "1" is not an integer or null.

内容はさっきと同じですね。
なんでよ!!

ちなみに、ログに POST の内容を出力してくれているので確認します。

body: '{"Issue":{"title":"Test Issue 02","labels":["bug"],"milestone":"1","assignee":"hocori"}}'

文字ェ……

こりゃあ何指定しても、文字で送られちゃうっぽいですね。。。
残念ですが、マイルストーンは空白でいきます……。

……またエラーですか。。。

Error
RequestError [HttpError]: Validation Failed: {"resource":"Issue","code":"missing_field","field":"body"}

しかし、エラー内容は変わりましたね。
マイルストーン数値で指定してね問題は乗り越えた様子。

しかし今回のエラーは何とも抽象的……。
"field":"body" なんで、送ってる内容がダメなのは分かるんですが……
うん、まぁ、だってそうだろうよ……orz でもそういうことじゃないじゃん……orz

とりあえず、いろいろ眺めて、POST の際に使われてない number 列を削除してみました。

……!!!

Imported Issue: Test Issue 02
Created 1 Issues, and had 0 failures.

できた! できたぞ!!!

インポートした結果

ちゃんと、body も入力内容が反映されているし、ラベルや担当も設定されてるー!
マイルストーンについては Issues のところからまとめてチェック入れて設定できるので、一部手動にはなりますが……まぁ概ね良しとしましょう!

これで楽に大量の Issue が作れるってもんです。

おわりに

新システム開発~とかでない限り、この方法を使ってまでどーんと Issue を作りたいことはないのかもしれませんが、進捗管理とかを考えると重宝しそうではあります。
GitHub CSV Tools のリポジトリを覗いてみると、プルリクや Issue もあって、ちょこちょこバージョンアップしてるっぽいので、今後のマイルストーンにも期待です。

いやぁ、ありがてぇツールだなぁ……