概要
Gitlab に Ruby からアクセスすることができるクライアント NARKOZ/gitlab を使ってみました
環境
- macOS 10.15.4
- Ruby 2.7.1p83
- gitlab 4.14.1
- GitLab Community Edition 12.9.2
初期化
事前に Personal Access Token を取得しておきます
Name と Scopes を設定します
Scopes は使用目的にあったものにしましょう
下にある「Create personal access token」をクリックすれば作成できます
作成した Token を使って初期化します
エンドポイントは v4 を使います
require 'gitlab'
g = Gitlab.configure do |config|
config.endpoint = 'http://localhost/api/v4'
config.private_token = '7dYb69s-yZxmSKiwChuW'
end
プロジェクトの一覧を取得する
まずはプロジェクトの一覧を取得しましょう
Gitlab Module に定義されているモジュールメソッドっぽくコールしていますが中身は Gitlab::Client::Projectsで定義されているモジュールメソッドです
require 'gitlab'
g = Gitlab.configure do |config|
config.endpoint = 'http://localhost/api/v4'
config.private_token = '7dYb69s-yZxmSKiwChuW'
end
projects = Gitlab.projects(per_page: 5)
projects.each { |project|
# puts project.to_hash
puts "#{project.id} #{project.name}"
}
取得できた一覧を each で回すと各プロジェクトにアクセスできます
to_hash
でハッシュにしても良いですしドットつなぎでフィールドにアクセスすることもできます
issue の一覧を取得する
指定したプロジェクト配下にある issue の一覧を取得してみます
require 'gitlab'
g = Gitlab.configure do |config|
config.endpoint = 'http://localhost/api/v4'
config.private_token = '7dYb69s-yZxmSKiwChuW'
end
issues = Gitlab.issues(1)
issues.each { |issue|
# puts issue.to_h
puts "#{issue.id} #{issue.title}"
}
to_h
はフィールド名を確認するのに使う感じかなと思います
issue を作成してみる
POST 系の API も試してみました
これも基本的には Gitlab モジュールからコールすれば OK です
ret = Gitlab.create_issue(1, 'test issue from ruby', :description => 'test')
puts ret
一応確認しましたが問題なく説明文も設定されていました
最後に
NARKOZ/gitlab を試してみました
かなり簡単に使える印象です
ちょっと疑問だったのは全プロジェクトを横断してアクセスできる管理者用の API があるのか気になりました
Impersonation Token というのがあったのでこれが怪しそうですが未検証です
0 件のコメント:
コメントを投稿