できたら素敵と調べてみたのですが,このイシューで示されている通り,
- issueやdiscussionでアップロードしたファイルは「issue」や「discussion」にリンクしていない
- リンク切れするとアップロードしたファイルを探す手段がない
- アップロードしたファイルを消す手段がない
など非常に素晴らしい (反語) 仕様となっているようで,家内gitlabサーバーでissueにファイルを添付
してgitlab REST apiを色々試してみましたが,
どこにもissueやdiscussionにリンクしている形跡は見当たりませんでした。
ただ,添付時にissueやduscussionのマークダウンで記述している本文に表示されるリンクを
そのまま残しているなら,見当はつくようです。
例えばあるissue番号1に付随するdiscussionの場合,
次のようなコードでマークダウンで記述されている本文を抜き出してから
(/uploads/...)
を抜き出して括弧をとると,
bash
1
2MY_TOKEN=this-is-token
3MY_URL=http://gitlab.example.com
4MY_ID=user%2Fproject
5ISSUE_NO=1
6
7curl -s --header "PRIVATE-TOKEN: $MY_TOKEN" \
8"$MY_URL/api/v4/projects/$MY_ID/issues/$ISSUE_NO/discussions" \
9| jq -r '.[]|.notes[].body'| grep -E -o '(/uploads/[^()]+)' | tr -d '[()]'
/uploads/乱数文字列/example.pdf
のような形でリンク先の相対リンクが得られます。
なおアップロードされたファイルの実際のリンクについては
http://gitlab.example.com/user/project/uploads/乱数文字列/example.pdf
のような感じになるのですが,これをapiでダウンロードする方法はなく,
本家スタックオーバーフローのとある記事のように
通常のユーザー・パスワード入力してログインしてダウンロードするのを模擬するしかなさそうです…
と以上が私の調査の限界となります。
gitlabはソース管理以外のところは行き当たりばったりの設計になっているようで,
このあたりのapiの仕様も追加されて欲しいところです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/30 23:49