Uploaded image for project: 'Jira Software Data Center'
  1. Jira Software Data Center
  2. JSWSERVER-20298

DVCS create incorrect webhook payload URL resulting 415 error

    XMLWordPrintable

Details

    Description

      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"
                }
         } 
         '

      Attachments

        1. wb.png
          wb.png
          35 kB

        Issue Links

          Activity

            People

              Unassigned Unassigned
              vkharisma vkharisma (Inactive)
              Votes:
              22 Vote for this issue
              Watchers:
              29 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: