Posted at

[GitLab] WebHook機能から送られてくるデータ形式まとめ

More than 3 years have passed since last update.

GitLabのWebHook機能で、GitLabから送られてくるデータをまとめてみました。

※ 現時点で不明な部分は判明次第更新予定です。


環境


  • GitLabのバージョン: XX

  • GitLab付随のサンプルプログラム( print_http_body.rb )を利用


    • print_http_body.rbはGitLabからPOST送信で送られてきたデータをそのまま出力するプログラムです



  • サンプルプログラムを実行するサーバのOS: RHEL6.6

  • サンプルプログラムを実行するサーバのRubyのバージョン: 1.8.7


GitLabから送られてくるデータフォーマット


データ形式

イベント発生時にGitLabから送られてくるデータは JSON 形式です。


イベントの種類

GitLabでは、以下の4つのイベントが発生した際にGitLabからデータを送るように指定できます。


  • Push events

  • Tag push events

  • Issues events

  • Merge Request events

GitLabから送られてくるイベントの種類は、送られてきたJSON形式のデータの object_kind のキーにより判別できます。

object_kindの値
データの内容

push
WebHookを設定したリポジトリに対し、pushした時に発行されるイベント

tag_push
WebHookを設定したリポジトリンに対し、tagをpushした時に発行されるイベント

issue
WebHookを設定したリポジトリのIssueに変化が起きた時に発行されるイベント

merge_request
WebHookを設定したリポジトリに関連する、Merge Requestの操作を行った時に発行されるイベント


pushイベント時に送られてくるデータ形式

pushイベント時にGitLabから送られてくるデータ形式を示します。

リポジトリを削除した場合にもpushイベントが発生しますが、キー after の値が0の羅列であるかで判定可能です。

★は調査中の項目です。

キー
子キー
孫キー

after

push後の最新のコミットのハッシュ値(リポジトリ削除の場合は0の羅列)

before

push前の最新のコミットのハッシュ値

checkout_sha

commits

コミット一覧(配列)

author

コミット者の情報

email
コミット者のE-mailアドレス

name
コミット者の名前

id

コミットのハッシュ

message

コミットメッセージ

timestamp

コミット日時

url

コミットをGitLab上で確認するためのURL

object_kind

イベントの種類( push

project_id

プロジェクトのID

ref

コミット先のブランチ

repository

push先のリポジトリ情報

description

git_http_url

リポジトリへHTTPアクセス時に必要となるURI

git_ssh_url

リポジトリへSSHアクセス時に必要となるURI

homepage

リポジトリのホームページ

name

リポジトリ名

url

git_ssh_url と同様

visibility_level

total_commits_count

pushに含まれるコミット数

user_email

pushを行った人のE-mailアドレス

user_id

pushを行った人のユーザID

user_name

pushを行った人の名前


tag_pushイベント時に送られてくるデータ形式

tag_pushイベント時にGitLabから送られてくるデータ形式を示します。

★は調査中の項目です。

キー
子キー
内容

after

push後の最新のコミットのハッシュ値

before

push前の最新のコミットのハッシュ値(本タグに対する前のコミットはないため確実に0の羅列になる)

checkout_sha

push前の最新コミットのハッシュ値(本タグではなく、リポジトリ全体の最新コミットハッシュ値)

commits

コミット一覧(常に空の配列)

object_kind

イベントの種類( tag_push

project_id

プロジェクトのID

ref

コミット先のブランチ(pushしたタグ名を取得可能)

repository

push先のリポジトリ情報

description

git_http_url
リポジトリへHTTPアクセス時に必要となるURI

git_ssh_url
リポジトリへSSHアクセス時に必要となるURI

homepage
リポジトリのホームページ

name
リポジトリ名

url
git_ssh_url と同様

visibility_level

total_commits_count

pushに含まれるコミット数(常に0)

user_email

pushを行った人のE-mailアドレス

user_id

pushを行った人のユーザID

user_name

pushを行った人の名前

★ 名前等からの推測のため、情報提供求


issueイベント時に送られてくるデータ形式

issueイベント時にGitLabから送られてくるデータ形式を示します。

既存のIssueに対してコメントを行った場合は、イベントは発生しません。

Issueに対してopen/close/reopenを発行すると、updateイベントも同時に発行されます。

★は調査中の項目です。

キー
子キー
内容

object_attributes

Issueイベントに関する様々な情報

action
Issueに対する操作
- open: Issueを発行
- update: Issueを更新
- close: Issueをクローズ
- reopen: Issueを再オープン

assignee_id
Assign toでIssueの担当者として割り当てられたユーザID

author_id
Issue発行者のユーザID

branch_name
Issueを発行したブランチ

created_at
Issue発行日時

description
Issueの説明文

id
IssueのID

iid
GitLab上で割り当てられたIssue番号(#で始まる番号)

milestone_id
関連付けしたMilestoneのID(割り当てないとnull)

position

project_id
プロジェクトのID

state
イベント発行後のIssueの状態
- opened : IssueがOpen状態
- closed : IssueがClosed状態
- reopened : 1度closeしたが、再度open状態に変化

title
Issueのタイトル

updated_at
イベント発行日時

url
本IssueのGitLab上でのURL

object_kind

イベントの種類(issue)

user

イベント発行者の情報

avater_url
イベント発行者のアバター画像のURL

name
イベント発行者の名前

username
イベント発行者のニックネーム


merge_requestイベントに送られてくるデータ形式

merge_requestイベント時にGitLabから送られてくるデータ形式を示します。

既存のMerge Requestに対するコメントを行った場合、イベントは発生しません。

Merge Request上でソースを修正してcommitすると、pushイベントが発行されます。

Merge Requestに対して、 open / close / merge を発行すると、merge_requestの update イベントも同時に発行されます。

★は調査中の項目です。

キー
子キー
孫キー
曾孫キー
内容

object_attributes

Merge Requestイベントに関する様々な情報

action

Merge Requestに対する操作
- open : Merge Requestを発行
- closed : Merge Requestをクローズ
- reopen : クローズしたMerge Requestを再オープン

assignee_id

Assign toでMerge Requestの担当者として割り当てられたユーザID

author_id

Merge Request発行者のユーザID

created_at

Merge Request発行日時

description

Merge Requestの説明文

id

Merge RequestのID

iid

GitLab上で割り当てられたMerge Request番号(#で始まる番号)

last_commit

Merge Request内の最終コミットの情報

author

コミット者の情報

email
コミット者のE-mailアドレス

name
コミット者の名前

id

コミットのハッシュ値

message

コミットのメッセージ

timestamp

コミット日時

url

コミットをGitLab上で確認するためのURL

locked_at

merge_status

★Merge Requestの状態
- unchecked :
- can_be_merged :

milestone_id

関連付けしたMilestoneのID(割り当てないとnull)

position

source

Merge Request元のリポジトリ情報

http_url

リポジトリへHTTPアクセス時に必要となるURI

name

リポジトリ名

namespace

リポジトリが所属するグループ名

ssh_url

リポジトリへSSHアクセス時に必要となるURI

visibility_level

source_branch

Merge Request元のブランチ名

source_project_id

Merge Request元のプロジェクトID

state

イベント発行後のMerge Requestの状態
- opened : Merge RequestがOpen状態
- closed : Merge RequestがClose状態
- reopened : 1度closeしたが、再度open状態に変化
- merged : Mergeが完了した状態

target

Merge Request先のリポジトリ情報

http_url

リポジトリへHTTPアクセス時に必要となるURI

name

リポジトリ名

namespace

リポジトリが所属するグループ名

ssh_url

リポジトリへSSHアクセス時に必要となるURI

visibility_level

target_branch

Merge Request先のブランチ名

target_project_id

Merge Request先のプロジェクトID

title

Merge Requestのタイトル

updated_at

イベント発行日時

url

本Merge RequestのGitLab上でのURL

object_kind

イベントの種類(merge_request)

user

イベント発行者の情報

avater_url

イベント発行者のアバター画像のURL

name

イベント発行者の名前

username

イベント発行者のニックネーム