2020年4月12日日曜日

Gitlab Ruby Client を試してみた

概要

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 件のコメント:

コメントを投稿