とある理由からGitlab CEで、Issueの一覧をcsvでダウンロードしたかったので、 get-all-gitlab-issues-as-csv
を使ってみました。
しかし、スムーズには動かずいくつか手を加えた部分があるので、その備忘録を残しておく。
動作確認環境
$ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.1 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.1 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic $
動作確認
今回使おうとしているツールはこちら。
まずは該当リポジトリをクローンしてきます。
$ git clone https://gitlab.com/emobix/get-all-gitlab-issues-as-csv.git
そのあと、README.mdに書かれているCSV_XS perl module
をインストールしておきます。
$ sudo apt-get install libtext-csv-perl
該当リポジトリに移動して、get-all-project-issues.pl
を開き、12~14行目を自分の環境に合わせます。
12 my $PROJECT_ID="Issueを取りまとめているプロジェクトのID"; # numeric project id, can be found in project -> general settings 13 my $GITLAB_API_PRIVATE_TOKEN='発行したToken'; # obtained from https://gitlab.com/profile/personal_access_tokens 14 my $baseurl = "自分の使っているGitlabのURL"; # change if using a private install
で、実行してみると以下のエラーが出ました。
$ ./get-all-project-issues.pl Can't locate LWP/UserAgent.pm in @INC (you may need to install the LWP::UserAgent module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./get-all-project-issues.pl line 5. BEGIN failed--compilation aborted at ./get-all-project-issues.pl line 5.
ふむ・・・なにやらモジュールが足りない様子。
ってことで、モジュールをインストールします。
Perlはほとんど使ったことがないのでやり方わからずググってみたところ、CPANとかいうので入れられるっぽいので以下の手順でインストール。
$ sudo su - # perl -MCPAN -e shell Terminal does not support AddHistory. cpan shell -- CPAN exploration and modules installation (v2.18) Enter 'h' for help. cpan[1]> install LWP::UserAgent
ルートユーザでやったのは何となくです。グローバルに入れたほうがいいのかなぐらいの気分でrootでやりました。
そのあと再実行すると、またもやモジュール(今度はLWP::Protocol::https)がないと言われたので、同様の手順でインストール。
そしてさいど実行したところ、正常に動きました。
$ ./get-all-project-issues.pl Fetching page 1 Fetching page 2 (of 8) Fetching page 3 (of 8) Fetching page 4 (of 8) Fetching page 5 (of 8) Fetching page 6 (of 8) Fetching page 7 (of 8) Fetching page 8 (of 8) Issues saved to issues.csv $
カレントのディレクトリにIssues.csv
の中身を見たら、Issueの内容がエクスポートされていました。
手順まとめ
ということで、手順としては自分の環境内に必要ライブラリがなかったので
をすることで無事に動かせました。
まとめ
ちゃんとページネーションの最後まで取ってきてくれてて地味にすごいなと思いました。
そこの部分はどうやっているんだろうとかソースコードを見ることもできるので、やり方も勉強になりました。
ちなみに、素のままだとIssueの内容が入っていて、それが改行されているためcsvとしてはおかしな形式になったのでそこは消して使っています。
今回、Issueの内容自体はいらなかったので・・・・
その辺のやり方もそのうち残せるようであれば残そうかな。
ではでは。
参考サイト
参考 : Perl モジュールのインストール方法 | reference | ドキュメント | PowerCMS - カスタマイズする CMS。