LoginSignup
25
28

More than 5 years have passed since last update.

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

Posted at

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 イベント発行者のニックネーム
25
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
28