Webhook from SonarQube

%3CLINGO-SUB%20id%3D%22lingo-sub-1566635%22%20slang%3D%22en-US%22%3EWebhook%20from%20SonarQube%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1566635%22%20slang%3D%22en-US%22%3E%3CP%3EI%20am%20setting%20up%20an%20automated%20code%20analysis%20system%20with%20SonarQube%20which%20reports%20into%20Teams.%3C%2FP%3E%3CP%3EI%20an%20using%20the%20Incomming%20Webhook%20in%20teams%20which%20is%20working%20fine%20work%20other%20products%2C%20but%20just%20not%20for%20SonarQube.%20I%20set%20up%20the%20webhook%20in%20SonarQube%20and%20I%20can%20see%20that%20it%20in%20fact%20is%20pushing%20notifications.%20I%20just%20don%C2%B4t%20see%20them%20in%20Teams.%20I%20would%20like%20either%20a%20add-on%20for%20SonarQube%20like%20there%20is%20for%20Yammer%2C%20Jenkins%20etc.%20or%20some%20guidance%20on%20what%20to%20do.%3C%2FP%3E%3CP%3ENote%3C%2FP%3E%3CP%3E*%20I%20am%20using%20the%20same%20type%20of%20webhook%20in%20Teams%20for%20Uptime-robot%20and%20that%20one%20work%20fine.%3CBR%20%2F%3E*%20I%20am%20getting%20a%20error%20code%20400%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EPayload%20sent%20to%20Teams%3C%2FP%3E%3CP%3E------------%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3E%7B%0A%20%20%22serverUrl%22%3A%20%22http%3A%2F%2Flocalhost%3A9000%22%2C%0A%20%20%22taskId%22%3A%20%22XXXXXXXX%22%2C%0A%20%20%22status%22%3A%20%22SUCCESS%22%2C%0A%20%20%22analysedAt%22%3A%20%222020-08-04T21%3A02%3A00%2B0200%22%2C%0A%20%20%22revision%22%3A%20%22xxxxxxxxxxxxxx%22%2C%0A%20%20%22changedAt%22%3A%20%222020-08-04T21%3A02%3A00%2B0200%22%2C%0A%20%20%22project%22%3A%20%7B%0A%20%20%20%20%22key%22%3A%20%22xxx%22%2C%0A%20%20%20%20%22name%22%3A%20%22xxx%22%2C%0A%20%20%20%20%22url%22%3A%20%22http%3A%2F%2Flocalhost%3A9000%2Fdashboard%3Fid%3Dxxx%22%0A%20%20%7D%2C%0A%20%20%22branch%22%3A%20%7B%0A%20%20%20%20%22name%22%3A%20%22master%22%2C%0A%20%20%20%20%22type%22%3A%20%22BRANCH%22%2C%0A%20%20%20%20%22isMain%22%3A%20true%2C%0A%20%20%20%20%22url%22%3A%20%22http%3A%2F%2Flocalhost%3A9000%2Fdashboard%3Fid%3Dxxx%22%0A%20%20%7D%2C%0A%20%20%22qualityGate%22%3A%20%7B%0A%20%20%20%20%22name%22%3A%20%22Sonar%20way%22%2C%0A%20%20%20%20%22status%22%3A%20%22OK%22%2C%0A%20%20%20%20%22conditions%22%3A%20%5B%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22metric%22%3A%20%22new_reliability_rating%22%2C%0A%20%20%20%20%20%20%20%20%22operator%22%3A%20%22GREATER_THAN%22%2C%0A%20%20%20%20%20%20%20%20%22value%22%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22OK%22%2C%0A%20%20%20%20%20%20%20%20%22errorThreshold%22%3A%20%221%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22metric%22%3A%20%22new_security_rating%22%2C%0A%20%20%20%20%20%20%20%20%22operator%22%3A%20%22GREATER_THAN%22%2C%0A%20%20%20%20%20%20%20%20%22value%22%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22OK%22%2C%0A%20%20%20%20%20%20%20%20%22errorThreshold%22%3A%20%221%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22metric%22%3A%20%22new_maintainability_rating%22%2C%0A%20%20%20%20%20%20%20%20%22operator%22%3A%20%22GREATER_THAN%22%2C%0A%20%20%20%20%20%20%20%20%22value%22%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22OK%22%2C%0A%20%20%20%20%20%20%20%20%22errorThreshold%22%3A%20%221%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22metric%22%3A%20%22new_coverage%22%2C%0A%20%20%20%20%20%20%20%20%22operator%22%3A%20%22LESS_THAN%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22NO_VALUE%22%2C%0A%20%20%20%20%20%20%20%20%22errorThreshold%22%3A%20%2280%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22metric%22%3A%20%22new_duplicated_lines_density%22%2C%0A%20%20%20%20%20%20%20%20%22operator%22%3A%20%22GREATER_THAN%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22NO_VALUE%22%2C%0A%20%20%20%20%20%20%20%20%22errorThreshold%22%3A%20%223%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22metric%22%3A%20%22new_security_hotspots_reviewed%22%2C%0A%20%20%20%20%20%20%20%20%22operator%22%3A%20%22LESS_THAN%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22NO_VALUE%22%2C%0A%20%20%20%20%20%20%20%20%22errorThreshold%22%3A%20%22100%22%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%5D%0A%20%20%7D%2C%0A%20%20%22properties%22%3A%20%7B%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E-----%3C%2FP%3E%3CP%3EUpdate%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20seems%20that%20Teams%20no%20not%20accept%20the%20json%20format%20that%20SonarQube%20sends%20see%20here%3A%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.sonarsource.com%2Ft%2Fproject-webhook-not-working-for-microsoft-teams%2F4905%2F8%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ecommunity%20sonarsource%20webhook%20%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3EDifferent%20companies%20already%20provide%20a%20SonarQube%20webhook%2C%20just%20look%20at%20Jira%2C%20jenkins%20tec.%20Then%20why%20not%20Microsoft%3F%20If%20Teams%20cannot%20accept%20different%20formats%20or%20provide%20a%20connector%20to%20SonarQube%2C%20then%20I%C2%B4ll%20need%20to%20go%20back%20to%20Slack%2C%20which%20is%20what%20I%20am%20trying%20to%20avoid.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1566635%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EHow-to%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EMicrosoft%20Teams%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ETips%20%26amp%3B%20Tricks%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1607316%22%20slang%3D%22en-US%22%3ERe%3A%20Webhook%20from%20SonarQube%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1607316%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F749792%22%20target%3D%22_blank%22%3E%40JimmyD1315%3C%2FA%3E%26nbsp%3BCurrently%20Teams%20only%20accepts%20a%20JSON%20payload%20to%20the%20webhook%20URL.%20This%20payload%20will%20be%20in%20the%20form%20of%20O365%20Connector%20card.%20You%20can%20refer%20to%20the%20payload%20sample%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fmicrosoftteams%2Fplatform%2Fwebhooks-and-connectors%2Fhow-to%2Fconnectors-using%23example-connector-message%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3Ehere.%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Frequent Visitor

I am setting up an automated code analysis system with SonarQube which reports into Teams.

I an using the Incomming Webhook in teams which is working fine work other products, but just not for SonarQube. I set up the webhook in SonarQube and I can see that it in fact is pushing notifications. I just don´t see them in Teams. I would like either a add-on for SonarQube like there is for Yammer, Jenkins etc. or some guidance on what to do.

Note

* I am using the same type of webhook in Teams for Uptime-robot and that one work fine.
* I am getting a error code 400

 

 

Payload sent to Teams

------------

 

 

 

 

 

 

{
  "serverUrl": "http://localhost:9000",
  "taskId": "XXXXXXXX",
  "status": "SUCCESS",
  "analysedAt": "2020-08-04T21:02:00+0200",
  "revision": "xxxxxxxxxxxxxx",
  "changedAt": "2020-08-04T21:02:00+0200",
  "project": {
    "key": "xxx",
    "name": "xxx",
    "url": "http://localhost:9000/dashboard?id=xxx"
  },
  "branch": {
    "name": "master",
    "type": "BRANCH",
    "isMain": true,
    "url": "http://localhost:9000/dashboard?id=xxx"
  },
  "qualityGate": {
    "name": "Sonar way",
    "status": "OK",
    "conditions": [
      {
        "metric": "new_reliability_rating",
        "operator": "GREATER_THAN",
        "value": "1",
        "status": "OK",
        "errorThreshold": "1"
      },
      {
        "metric": "new_security_rating",
        "operator": "GREATER_THAN",
        "value": "1",
        "status": "OK",
        "errorThreshold": "1"
      },
      {
        "metric": "new_maintainability_rating",
        "operator": "GREATER_THAN",
        "value": "1",
        "status": "OK",
        "errorThreshold": "1"
      },
      {
        "metric": "new_coverage",
        "operator": "LESS_THAN",
        "status": "NO_VALUE",
        "errorThreshold": "80"
      },
      {
        "metric": "new_duplicated_lines_density",
        "operator": "GREATER_THAN",
        "status": "NO_VALUE",
        "errorThreshold": "3"
      },
      {
        "metric": "new_security_hotspots_reviewed",
        "operator": "LESS_THAN",
        "status": "NO_VALUE",
        "errorThreshold": "100"
      }
    ]
  },
  "properties": {}
}

 

 

-----

Update

 

I seems that Teams no not accept the json format that SonarQube sends see here: community sonarsource webhook  

Different companies already provide a SonarQube webhook, just look at Jira, jenkins tec. Then why not Microsoft? If Teams cannot accept different formats or provide a connector to SonarQube, then I´ll need to go back to Slack, which is what I am trying to avoid.

 

 

 

 

 

 

 

 

 

 

1 Reply

@JimmyD1315 Currently Teams only accepts a JSON payload to the webhook URL. This payload will be in the form of O365 Connector card. You can refer to the payload sample here.

 

www.000webhost.com