jenkinsci / generic-webhook-trigger-plugin

Can receive any HTTP request, extract any values from JSON or XML and trigger a job with those values available as variables. Works with GitHub, GitLab, Bitbucket, Jira and many more.
https://plugins.jenkins.io/generic-webhook-trigger
410 stars 160 forks source link

Sometimes multiple variable contributions is shown #283

Closed monwolf closed 10 months ago

monwolf commented 10 months ago

Hi,

We are trying to integrate bitbucket cloud into our jenkins, when bitbucket sends a push webhook in our build appears repeated the contributing variables mixed up with the logs of the build:

image

The plugin config is done in a dsl job as follows:

                genericTrigger {
                    genericVariables {
                        genericVariable {
                            key("commit")
                            value("\$.push.changes[0].new.target.hash")
                            expressionType("JSONPath")
                            regexpFilter("")
                        }
                        genericVariable {
                            key("author")
                            value("\$.actor.display_name")
                            expressionType("JSONPath")
                            regexpFilter("")
                        }
                        genericVariable {
                            key("author_id")
                            value("\$.actor.account_id")
                            expressionType("JSONPath")
                            regexpFilter("")
                        }

                        genericVariable {
                            key("branch")
                            value("\$.push.changes[0].new.name")
                            expressionType("JSONPath")
                            regexpFilter("") //Optional, defaults to empty string
                        }
                        genericVariable {
                            key("reponame")
                            value("\$.repository.full_name")
                            expressionType("JSONPath")
                            regexpFilter("")
                        }

                        genericVariable {
                            key("type")
                            value("\$.push.changes[0].new.type")
                            expressionType("JSONPath")
                            regexpFilter("")
                        }
                        genericVariable {
                            key("changestype")
                            value("\$.push.changes[0].new.target.type")
                            expressionType("JSONPath")
                            regexpFilter("")
                        }

                    }
                    causeString('Webhook Push')
                    token(tokenHash)
                    printContributedVariables(true)
                    // printPostContent(true)
                    regexpFilterExpression('^(commit_branch_master|commit_tag_v?(\\d+(?:\\.\\d+)*))$')
                    regexpFilterText('$changestype_$type_$branch')
                }

The payload is

{
  "push": {
    "changes": [
      {
        "old": null,
        "new": {
          "name": "2.6.3",
          "type": "tag",
          "message": "build: automatic tag release 2.6.3\n",
          "date": "2023-11-22T09:49:33+00:00",
          "tagger": {},
          "target": {
            "type": "commit",
            "hash": "2b26c4238f946b801cecb5e460f0705b24de2379",
            "date": "2023-11-22T08:11:40+00:00",
            "author": {
              "type": "author",
              "raw": "xxxxxxxxxxxxx",
              "user": {
                "display_name": "xxxxxxxx",
                "links": {
                  "self": {
                    "href": "https://api.bitbucket.org/2.0/users/%xxxxxxxxx%7D"
                  },
                  "avatar": {
                    "href": "https://secure.gravatar.com/avatar/xxxxxxxxxx?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FBG-4.png"
                  },
                  "html": {
                    "href": "https://bitbucket.org/%xxxxxxxxxx%7D/"
                  }
                },
                "type": "user",
                "uuid": "{xxxxxxxxxx}",
                "account_id": "xxxxxxxxxxxx",
                "nickname": "xxxxxxxxxxx"
              }
            },
            "message": "Merged in feature/SAEA-1234-test (pull request #1)\n\nchore: bump version\n\nApproved-by: Joan Martorell Mir",
            "summary": {
              "type": "rendered",
              "raw": "Merged in feature/SAEA-1234-test (pull request #1)\n\nchore: bump version\n\nApproved-by: Joan Martorell Mir",
              "markup": "markdown",
              "html": "<pre class=\"plaintext\">Merged in feature/SAEA-1234-test (pull request #1)\n\nchore: bump version\n\nApproved-by: Joan Martorell Mir</pre>"
            },
            "links": {
              "self": {
                "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo/commit/2b26c4238f946b801cecb5e460f0705b24de2379"
              },
              "html": {
                "href": "https://bitbucket.org/workspace/my-repo/commits/2b26c4238f946b801cecb5e460f0705b24de2379"
              }
            },
            "parents": [
              {
                "hash": "9f6fb7534b12ddb091aeb67f992126b4028757f4",
                "links": {
                  "self": {
                    "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo/commit/9f6fb7534b12ddb091aeb67f992126b4028757f4"
                  },
                  "html": {
                    "href": "https://bitbucket.org/workspace/my-repo/commits/9f6fb7534b12ddb091aeb67f992126b4028757f4"
                  }
                },
                "type": "commit"
              },
              {
                "hash": "9dfe6998d7f625d441e48cf477db0fe4cb6eeef1",
                "links": {
                  "self": {
                    "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo/commit/9dfe6998d7f625d441e48cf477db0fe4cb6eeef1"
                  },
                  "html": {
                    "href": "https://bitbucket.org/workspace/my-repo/commits/9dfe6998d7f625d441e48cf477db0fe4cb6eeef1"
                  }
                },
                "type": "commit"
              }
            ],
            "rendered": {},
            "properties": {}
          },
          "links": {
            "self": {
              "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo/refs/tags/2.6.3"
            },
            "commits": {
              "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo/commits/2.6.3"
            },
            "html": {
              "href": "https://bitbucket.org/workspace/my-repo/commits/tag/2.6.3"
            }
          }
        },
        "truncated": false,
        "created": true,
        "forced": false,
        "closed": false,
        "links": {
          "commits": {
            "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo/commits?include=2b26c4238f946b801cecb5e460f0705b24de2379"
          }
        }
      }
    ]
  },
  "repository": {
    "type": "repository",
    "full_name": "workspace/my-repo",
    "links": {
      "self": {
        "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo"
      },
      "html": {
        "href": "https://bitbucket.org/workspace/my-repo"
      },
      "avatar": {
        "href": "https://bytebucket.org/ravatar/%7B5b7dc937-59ed-4f16-aa2b-18b1e293282e%7D?ts=nodejs"
      }
    },
    "name": "my-repo",
    "scm": "git",
    "website": null,
    "owner": {
      "display_name": "workspace",
      "links": {
        "self": {
          "href": "https://api.bitbucket.org/2.0/workspaces/%yyyyyyy%7D"
        },
        "avatar": {
          "href": "https://bitbucket.org/account/workspace/avatar/"
        },
        "html": {
          "href": "https://bitbucket.org/%yyyyyyy%7D/"
        }
      },
      "type": "team",
      "uuid": "{8152e17b-9e4b-468c-b278-9e5116ef685c}",
      "username": "workspace"
    },
    "workspace": {
      "type": "workspace",
      "uuid": "{8152e17b-9e4b-468c-b278-9e5116ef685c}",
      "name": "workspace",
      "slug": "workspace",
      "links": {
        "avatar": {
          "href": "https://bitbucket.org/workspaces/workspace/avatar/?ts=1700469637"
        },
        "html": {
          "href": "https://bitbucket.org/workspace/"
        },
        "self": {
          "href": "https://api.bitbucket.org/2.0/workspaces/workspace"
        }
      }
    },
    "is_private": true,
    "project": {
      "type": "project",
      "key": "PRY",
      "uuid": "{90a5d14d-1802-4425-ba25-581136f96c4f}",
      "name": "Microservices",
      "links": {
        "self": {
          "href": "https://api.bitbucket.org/2.0/workspaces/workspace/projects/PRY"
        },
        "html": {
          "href": "https://bitbucket.org/workspace/workspace/projects/PRY"
        },
        "avatar": {
          "href": "https://bitbucket.org/account/user/workspace/projects/PRY/avatar/32?ts=1700235117"
        }
      }
    },
    "uuid": "{5b7dc937-59ed-4f16-aa2b-18b1e293282e}",
    "parent": {
      "type": "repository",
      "full_name": "workspace/my-repo",
      "links": {
        "self": {
          "href": "https://api.bitbucket.org/2.0/repositories/workspace/my-repo"
        },
        "html": {
          "href": "https://bitbucket.org/workspace/my-repo"
        },
        "avatar": {
          "href": "https://bytebucket.org/ravatar/%7B6c0fdead-d6c1-4731-be45-3e737c7774fd%7D?ts=nodejs"
        }
      },
      "name": "my-repo",
      "uuid": "{6c0fdead-d6c1-4731-be45-3e737c7774fd}"
    }
  },
  "actor": {
    "display_name": "XXXXXXX",
    "links": {
      "self": {
        "href": "https://api.bitbucket.org/2.0/users/xxxxxxx"
      },
      "avatar": {
        "href": "https://secure.gravatar.com/avatar/xxxxxxx.png"
      },
      "html": {
        "href": "https://bitbucket.org/%xxxxxx%7D/"
      }
    },
    "type": "user",
    "uuid": "{xxxxxxxxxx}",
    "account_id": "XXXXXXX",
    "nickname": "XXXXXXX"
  }
}
tomasbjerre commented 10 months ago

Sounds like this is same as https://github.com/jenkinsci/generic-webhook-trigger-plugin/issues/184

I would do printContributedVariables(false) and only do printContributedVariables(true) when I am troubleshooting something.

monwolf commented 10 months ago

Yes it's duplicated i didn't see it, is there no way to print just at start of job?

tomasbjerre commented 10 months ago

Should be fixed now in 1.88.1 open issue again if not working.