5.1.11. Github

5.1.11.1. Pull Requests

This API endpoint is for creating attachments in a bug that are redirect links to a specific Github pull request. This allows a bug viewer to click on the Github link and be automatically redirected to the pull request.

Github Setup Instructions

  • From the repository main page, click on the Settings tab.

  • Click on Webhooks from the left side menu.

  • Click on the Add Webhook button near the top right.

  • For the payload url, enter https://bugzilla.mozilla.org/rest/github/pull_request.

  • Choose application/json for the content type.

  • You will need to enter the signature secret obtained from a BMO admin (DO NOT SHARE).

  • Make sure Enable SSL is turned on.

  • Select “Let me select individual events” and only enable changes for “Pull Requests”.

  • Make sure at the bottom that “Active” is checked on.

  • Save the webhook.

Note

Past pull requests will not automatically get a link created in the bug. New pull requests should get the link automatically when the pull request is first created.

Note

The API endpoint looks at the pull request title for the bug id so make sure the title is formatted correctly to allow the bug id to be determined. Examples are: Bug 1234:, Bug - 1234, bug 1234, or Bug 1234 -.

Request

The endpoint will error for any requests that do not have X-GitHub-Event header with either the value pull_request or ping. Ping events can happen when a webhook is first created. In that case, Bugzilla will return success if the signature checks out.

POST /rest/github/pull_request
{
  "pull_request": {
    "html_url": "https://github.com/mozilla-bteam/bmo/pull/1943",
    "number": 1943,
    "title": "Bug 1234567 - Some really bad bug which should be fixed"
  }
}

The above example is only a small amount of the full data that is sent.

Some params must be set, or an error will be thrown. The required params are marked in bold.

name

type

description

pull_request

Object

Object containing data about the current pull request.

pull_request.html_url

string

A fully qualified link to the pull request.

pull_request.number

int

The pull request ID unique to the repository.

pull_request.title

string

The full title of the current pull request containing the bug report ID.

Response

Operation was completed successfully.

{
  "error": 0
  "id": 22
}

name

type

description

error

boolean

Whether the operation was successful or not.

id

int

ID of the pre-existing or newly-created attachment.

An error condition occurred.

{
  "error": 1
  "message": "The pull request title did not contain a valid bug ID."
}

name

type

description

error

boolean

Whether the operation was successful or not.

message

string

A message detailing what the error condition was.

5.1.11.2. Push Comments

This API endpoint is for adding comments to a bug when a push is made to a linked Github repository. The comment will be short and specially formatted using pieces of information from the full JSON sent to Bugzilla by the push event. If the bug does not have the keyword leave-open set, the bug will be resolved as FIXED. Also, the qe-verify flag will be set to + for the bug. For some specific repositories, a Firefox status flag may be set to FIXED.

Github Setup Instructions

  • From the repository main page, click on the Settings tab.

  • Click on Webhooks from the left side menu.

  • Click on the Add Webhook button near the top right.

  • For the payload url, enter https://bugzilla.mozilla.org/rest/github/push_comment.

  • Choose application/json for the content type.

  • You will need to enter the signature secret obtained from a BMO admin (DO NOT SHARE).

  • Make sure Enable SSL is turned on.

  • Select “Let me select individual events” and only enable changes for “Pushes”.

  • Make sure at the bottom that “Active” is checked on.

  • Save the webhook.

Note

The API endpoint looks at the commit messages for the bug ID so make sure the message is formatted correctly to allow the bug ID to be determined. Examples are: Bug 1234:, Bug - 1234, bug 1234, or Bug 1234 -.

Request

The endpoint will error for any events that do not have X-GitHub-Event header with either the value push or ping. Ping events can happen when a webhook is first created. In that case, Bugzilla will return success if the signature checks out.

POST /rest/github/push_comment
{
  "ref": "refs/heads/master",
  "repository": {
    "full_name": "mozilla-bteam/bmo",
    "html_url": "https://github.com/mozilla-bteam/bmo",
    "description": "bugzilla.mozilla.org source - report issues here: https://bugzilla.mozilla.org/enter_bug.cgi?product=bugzilla.mozilla.org",
  },
  "commits": [
    {
      "message": "Bug 1803939 - Webhook URL field is too short",
      "url": "https://github.com/mozilla-bteam/bmo/commit/b4edfe9343e1474e0a6959531d2362078ea6ee84",
      "author": {
        "name": "dklawren",
        "username": "dklawren"
      },
      "added": [],
      "removed": [],
      "modified": [
        "extensions/Webhooks/Extension.pm",
        "extensions/Webhooks/template/en/default/account/prefs/webhooks.html.tmpl"
      ]
    }
  ]
}

The above example is only a small amount of the full data that is sent.

Note

Only the first line of the commit message will be used on the bug comment.

Some params must be set, or an error will be thrown. The required params are marked in bold.

name

type

description

ref

string

The branch (ref) that the commit was pushed to (ex: refs/heads/master).

repository.full_name

string

The name of the Github repository.

commits

array

An array of commit objects that were pushed.

commits.<index>.message

string

The full commit message containing the bug report ID.

commits.<index>.url

string

The full URL to the commit on Github.

commits.<index>.author.username

string

The user name of the commit author.

Response

Operation was completed successfully.

{
  "bugs": {
    1803939: [
      {
        "text": "Authored by https:\/\/github.com\/dklawren\nhttps:\/\/github.com\/mozilla-bteam\/bmo\/commit\/4ef4caed5bc22a734bd9ec15aaac87c19ef6e80e\nBug 1803939 - Webhook URL field is too short"
      }
    ]
  },
  "error": 0
}

name

type

description

error

boolean

Whether the operation was successful or not.

bugs

object

Object containing bug IDs as object keys.

bugs.<id>

array

List of comment objects that were added to the bug <id>.

bugs.<id>.<index>.text

string

The comment text that was added to the bug <id>.

An error condition occurred.

{
  "error": 1
  "message": "The push commit message did not contain a valid bug ID."
}

name

type

description

error

boolean

Whether the operation was successful or not.

message

string

A message detailing what the error condition was.


This documentation undoubtedly has bugs; if you find some, please file them here.