首页 文章

Bitbucket Jenkins插件构造错误的推送URL

提问于
浏览
1

我们使用Bitbucket服务器,并希望每当有东西被推送到Bitbucket时触发Jenkins构建 .

我尝试根据此页面设置所有内容:https://wiki.jenkins.io/display/JENKINS/BitBucket+Plugin

所以我在Bitbucket中创建了一个Post Webhook,指向Jenkins Bitbucket插件的 endpoints .

当推送发生时,Bitbucket成功通知插件 . 根据Jenkins日志,插件然后遍历所有“检查更改被推送到BitBucket时构建”的作业,并尝试将该作业的repo URL与发生的推送的URL匹配 .

因此,如果repo URL为 https://jira.mycompany.com/stash/scm/PROJ/project.git ,则插件会尝试将其与 https://jira.mycompany.com/stash/PROJ/project 匹配,这显然会失败 .

根据Atlassian的官方信息,不能阻止Bitbucket在路径中插入“/ scm /”部分 .

Bitbucket Jenkins插件中的相应代码在类_1545995中:

private void processWebhookPayloadBitBucketServer(JSONObject payload) {
    JSONObject repo = payload.getJSONObject("repository");
    String user = payload.getJSONObject("actor").getString("username");
    String url = "";
    if (repo.getJSONObject("links").getJSONArray("self").size() != 0) {
        try {
            URL pushHref = new URL(repo.getJSONObject("links").getJSONArray("self").getJSONObject(0).getString("href"));
            url = pushHref.toString().replaceFirst(new String("projects.*"), new String(repo.getString("fullName").toLowerCase()));
            String scm = repo.has("scmId") ? repo.getString("scmId") : "git";
            probe.triggerMatchingJobs(user, url, scm, payload.toString());
        } catch (MalformedURLException e) {
            LOGGER.log(Level.WARNING, String.format("URL %s is malformed", url), e);
        }
    }
}

在Bitbucket发送到插件的JSON有效负载中,实际的结账URL不会出现,只有链接到存储库的Bitbucket页面 . 插件中的上述方法似乎通过删除项目/之后的所有内容并添加repo的“全名”来构造该URL的结帐URL,从而导致上述错误的URL .

Atlassian的官方信息是Bitbucket无法阻止将“scm”部分添加到结帐URL .

这是Jenkins插件中的错误吗?如果是这样,该插件如何适用于任何人?

1 回答

  • 0

    我找到了失败的原因 .

    问题是,Jenkins的Bitbucket插件 does 占据路径 /scm 部分,主机名后面是 but only if it's the first part .

    如果您的Bitbucket服务器实例不是在其自己的域下配置,而是在另一个服务的路径下,则匹配结帐URL将失败 .

    例:

    https://bitbucket.foobar.com/scm/PROJ/myproject.git 会工作,

    https://jira.foobar.com/stash/scm/PROJ/myproject.git 无效 .

    也有此问题的人已经为插件创建了一个修复程序,其挂起请求正在等待处理:JENKINS-49177: Now removing first occurrence of /scm

相关问题