DVCS create incorrect webhook payload URL resulting 415 error

XMLWordPrintable

    • 7.13
    • 16
    • Severity 2 - Major
    • 116

      Issue Summary

      Webhooks creating from the Jira integration with GitHub Enterprise are created with an incorrect URL.

      Previously, Push and Pull webhooks were created using the same URL

      • Push: JIRA_BASE_URL/rest/bitbucket/1.0/repository/XXXXXXX/sync
      • Pull request: JIRA_BASE_URL/rest/bitbucket/1.0/repository/XXXXXXX/sync

      But in 7.13.8 and 8.5.x, the push webhook is being created as an incorrect payload JIRA_BASE_URL/rest/bitbucket/1.0/repository/XXXXXXX/repo/sync resulting in Invalid HTTP response: 415.

      IMPACT ON YOUR INSTANCE

      This bug specifically affects webhook operation (eg. smart commit). DVCS can fallback to the hourly sync to fetch changes from GH/E. However, it means changes can delay up to 1 hour before they got across in Jira.

      Steps to Reproduce

      1. Install Jira 7.13.8
      2. Connect Jira to Github Enterprise

      Expected Results

      Webhook created with the correct payload URL

      <BASE_URL>/rest/bitbucket/1.0/repository/<repository-id>/sync 
      

      Actual Results

      Webhook created with incorrect payload URL resulting in 415

      <BASE_URL>/rest/bitbucket/1.0/repository/<repository-id>/repo/sync 
      

      Notes

      This issue affects Jira version released after July 2019

      Workaround

      Remove "/repo" from the payload URL manually, webhook work properly, or by rest API directly to Github:

      1. Grab all webhooks from each repo: 
        curl --location --request GET 'https://api.github.com/repos/<user>/<repo name>/hooks' \
        --header 'Authorization: Basic xxxxxxxxx' \
        

        This will return the following, we are looking for any webhook IDs that have the offending url pattern (/repo) in this case it would be "id": 252018187:

         {
                "type": "Repository",
                "id": 252018187,
                "name": "web",
                "active": true,
                "events": [
                    "push"
                ],
                "config": {
                    "content_type": "form",
                    "insecure_ssl": "0",
                    "url": "https://BASEURL/rest/bitbucket/1.0/repository/1/repo/sync"
                },
                "updated_at": "2020-09-28T18:48:55Z",
                "created_at": "2020-09-28T18:46:41Z",
                "url": "https://api.github.com/repos/volktronz/TEST/hooks/252018187",
                "test_url": "https://api.github.com/repos/volktronz/TEST/hooks/252018187/test",
                "ping_url": "https://api.github.com/repos/volktronz/TEST/hooks/252018187/pings",
                "last_response": {
                    "code": 200,
                    "status": "active",
                    "message": "OK"
                }
            }
        
      2. Then we'd make another call to each webhook ID identified with the right URL pattern:
        curl --location --request PATCH 'https://api.github.com/repos/volktronz/test/hooks/252018187' \
        --header 'Authorization: Basic xxxxxxxx' \
        --header 'Content-Type: application/json' \
        --data-raw ' { "config": {
               "url": "https:BASEURL/rest/bitbucket/1.0/repository/1/sync"
                }
         } 
         '

        1. wb.png
          wb.png
          35 kB

            Assignee:
            Unassigned
            Reporter:
            vkharisma
            Votes:
            22 Vote for this issue
            Watchers:
            28 Start watching this issue

              Created:
              Updated:
              Resolved: