概要
user_events API を使います
Ruby を使ったサンプルコードを紹介します
環境
- Ubuntu18.04
- Ruby 3.0.0
- gitlab 4.19.0
サンプルコード
require 'gitlab'
require 'date'
g = Gitlab.configure do |config|
config.endpoint = 'http://local.gitlab/api/v4'
config.private_token = 'xxx'
end
user_id = 1
now = DateTime.now
after = (now - 8).strftime("%Y-%m-%d")
events = Gitlab.user_events(user_id, { after: after, per_page: 100 })
summary = {}
events.each do |e|
# pp e.to_h
title = e['target_title']
project_id = e['project_id']
unless title.nil?
summary[title] = project_id
end
end
pp summary
summary.each do |title, project_id|
is_next = false
issues = Gitlab.issues(project_id, { per_page: 40 })
issues.each do |issue|
# pp issue.to_h
if issue['title'] == title
puts "* #{title} #{issue['web_url']}"
is_next = true
break
end
end
next if is_next
merge_requests = Gitlab.merge_requests(project_id, { per_page: 40 })
merge_requests.each do |merge_request|
# pp merge_request.to_h
if merge_request['title'] == title
puts "* #{title} #{merge_request['web_url']}"
is_next = true
break
end
end
next if is_next
wikis = Gitlab.wikis(project_id, { per_page: 40 })
wikis.each do |wiki|
# pp wiki.to_h
if wiki['title'] == title
puts "* #{title} #{wiki['slug']}"
is_next = true
break
end
end
next if is_next
end
ちょっと解説
user_events を使って指定のユーザのイベントを取得します
期間は1週間分取得しています
直接 issue や merge request の URL を取得できないのでとりあえずプロジェクトIDとタイトルの一覧を取得します
その後一覧から issue と merge request と wiki の URL を生成します
もっといい方法がありそうですがとりあえず動けばで作ったのでこんな感じになっています
0 件のコメント:
コメントを投稿