来自 azure devops returns 404 的 teamcity 的服务挂钩 url

Service hook url for teamcity from azure devops returns 404

我想为 TeamCity 创建一个提交挂钩。为此,我在 azure devops 中创建了 Service Hook:

http://teamCityServer/app/rest/vcs-root-instances/commitHookNotification?locator=vcsRoot:(type:jetbrains.git,count:99999),property:(name:url,value:https%3A%2F%2FazureDevOpsServer%2FWeb%2FMy+Project+Name%2F_git%2FMyProjectName,matchType:contains,ignoreCase:true),count:99999

当我测试服务挂钩时出现错误 'Statuscode: 404'。 据我了解,问题在于项目中的空格。它是:

'https://azureDevOpsServer/Web/My 项目 Name/_git/MyProjectName'

我尝试了“+”和“%20”来创建 url-转义 link,但没有成功...

有什么想法吗?

这个对我有用:

http://teamCityServer/app/rest/vcs-root-instances/commitHookNotification?locator=vcsRoot:(type:jetbrains.git,count:99999),property:(name:url,value:https%3A%2F%2FazureDevOpsServer%2FWeb%2FMy%2520Project%2520Name%2F_git%2FMyProjectName,matchType:contains,ignoreCase:true),count:99999

希望这个小改动能节省一些人的时间

很高兴 Sasha 解决了这个问题。我来这里是为了解决此类问题。

建议在配置实际挂钩之前尝试从命令行执行以下命令:

curl --header "Authorization: Bearer $ACCESS_TOKEN" -X POST "$SERVER/app/rest/vcs-root-instances/commitHookNotification?locator=$LOCATOR"

如果提交挂钩正确匹配服务器上的 VCS 根目录,您应该会看到类似如下的输出:

Scheduled checking for changes for 1 VCS roots. (Server time: 20160719T192540.787+0300)

如果commit hook没有找到任何VCS root,会报错:

No VCS roots are found ...

出现此输出的可能原因:

  • 指定的定位器不正确,它不匹配任何 VCS 根目录 服务器
  • 指定的用户没有足够的权限进行至少一项 匹配的 VCS 根。

要检查实际匹配的根,请使用请求:

curl --header "Authorization: Bearer $ACCESS_TOKEN" -X POST "$SERVER/app/rest/vcs-root-instances?locator=$LOCATOR"

详情请参考此document