- 2022年12月26日
こんにちは、岡田です。
今日は開発の進捗管理をするにあたって、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) 。
Token
、User or organization
、Repository
をそれぞれ入力して、実行すると、なるほどエクスポートされました!
今回はダウンロード先を特に指定していないので、当該リポジトリの直下にエクスポートされてきましたね。
ちなみに。。。
備忘録的にアクセストークンの作成についてのリンクも貼っておきます。
個人アクセストークンを使用する
(たまにしかやらんので、忘れてしまって調べ直した…)
おっけ、さっそく開いてみる!
なるほどなるほど……
設定したい内容は全部書けそうな感じ!いいですねぇ~。
Issue を作る時にうっかりタイトルだけで作成しちゃったけど、コメントを入力したら body
の列に表示されるのかな?
これはインポートの時に試して確認してみます。
Issue をインポートする
さてさて、フォーマットも分かったし、それではさっそく取り込んでみます!
この内容で、先ほどのコマンド 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 もあって、ちょこちょこバージョンアップしてるっぽいので、今後のマイルストーンにも期待です。
いやぁ、ありがてぇツールだなぁ……