/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

get-all-gitlab-issues-as-csvを動かす

とある理由から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
$

 

動作確認

今回使おうとしているツールはこちら。

gitlab.com

Perlスクリプトです。

 

まずは該当リポジトリをクローンしてきます。

$ 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の内容がエクスポートされていました。

 

手順まとめ

ということで、手順としては自分の環境内に必要ライブラリがなかったので

  • libtext-csv-perl(apt経由)
  • LWP::UserAgent、LWP::Protocol::https をインストール(CPAN経由)

をすることで無事に動かせました。

 

まとめ

ちゃんとページネーションの最後まで取ってきてくれてて地味にすごいなと思いました。

そこの部分はどうやっているんだろうとかソースコードを見ることもできるので、やり方も勉強になりました。

ちなみに、素のままだとIssueの内容が入っていて、それが改行されているためcsvとしてはおかしな形式になったのでそこは消して使っています。

今回、Issueの内容自体はいらなかったので・・・・

その辺のやり方もそのうち残せるようであれば残そうかな。

ではでは。

 

参考サイト

参考 : Perl モジュールのインストール方法 | reference | ドキュメント | PowerCMS - カスタマイズする CMS。