如何使用Python请求模块和TeamCity API触发构建?

Zhongde Yu

TeamCity 9.x文档部分Triggering a Build有一个cURL示例

curl -v -u user:password http://teamcity.server.url:8111/app/rest/buildQueue --request POST --header "Content-Type:application/xml" --data-binary @build.xml

我想知道如何将其转换为等效的Python脚本(使用POST来自requests模块的请求)?


顺便说一句,我尝试了以下Python脚本,但得到了这样的响应代码400 (Bad Request)

url = "http://myteamcity.com:8111/httpAuth/app/rest/buildQueue/"
headers = {'Content-Type': 'application/json'}
data = json.dumps({'buildTypeId': 'MyTestBuild'})
r = requests.post(url, headers=headers, data=data, auth=("username", "password"), timeout=10)
print "r = ", r

>> r =  <Response [400]>

如果变化Content-TypeheadersAccept,得到了另一个响应代码415 (Unsupported Media Type)

headers = {'Accept': 'application/json'}

>> r =  <Response [415]>
马丁·彼得斯(Martijn Pieters)

触发构建的文档显示您需要发送XML而不是JSON:

<build>
    <buildType id="buildConfID"/>
</build>

TeamCity REST API有点复杂。有些方法同时接受XML和JSON,有些仅接受XML。这是后一种方法之一。他们将根据您设置Accept标头的内容以XML或JSON进行响应

发送以上内容和您所需的内部版本ID;对于一个简单的XML文档,您可以使用模板:

from xml.sax.saxutils import quoteattr

template = '<build><buildType id={id}/></build>'

url = "http://myteamcity.com:8111/httpAuth/app/rest/buildQueue/"
headers = {'Content-Type': 'application/xml'}
build_id = 'MyTestBuild'
data = template.format(id=quoteattr(build_id))

r = requests.post(url, headers=headers, data=data, auth=("username", "password"), timeout=10)

请注意,我使用该xml.sax.saxutils.quotattr()函数来确保build_id正确引用的值以包含为XML属性。

这将产生XML;如果要处理JSON响应,请添加'Accept': 'application/json'headers字典中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Jenkins JSON API-查找构建,构建环境和构建触发器API数据

来自分类Dev

TeamCity REST API:使用自定义工件依赖项触发构建

来自分类Dev

使用 Python 请求触发 GitLab 构建

来自分类Dev

TFS 2017 更新 2 - 使用 REST API 触发拉取请求验证构建

来自分类Dev

Teamcity在合并中触发构建

来自分类Dev

VSTS:如何使用 REST API 获取由构建触发的版本 ID

来自分类Dev

使用POST请求触发Jenkins构建

来自分类Dev

使用Git触发TeamCity非确定性构建

来自分类Dev

如何使用请求模块使用Python将JSON文件的内容发布到RESTFUL API

来自分类Dev

如何在azure devops中触发对请求的构建和测试?

来自分类Dev

如何查找通过svn commit触发的构建

来自分类Dev

如何从GitHub安全触发Jenkins构建

来自分类Dev

Gatsby Webhooks以及如何从Strapi触发构建

来自分类Dev

如何在本地触发Gitlab CI构建?

来自分类Dev

如何查找通过svn commit触发的构建

来自分类Dev

Jenkins,如何在“QuietDown”期间触发构建

来自分类Dev

Jenkins 何时使用构建触发器

来自分类Dev

通过curl触发构建时如何设置Jenkins构建说明?

来自分类Dev

如何使用CMake构建Python扩展模块?

来自分类Dev

TeamCity GIt 实验室合并请求未触发构建

来自分类Dev

使用TeamCity构建TeamCity

来自分类Dev

TeamCity为新分支触发了太多构建

来自分类Dev

TeamCity是否可以触发新的Git分支/标签的构建?

来自分类Dev

更改特定C#项目时的TeamCity触发构建

来自分类Dev

如何在詹金斯中使用perforce触发的构建

来自分类Dev

如何使用管道插件在特定节点上触发jenkins构建?

来自分类Dev

如何使用Cosmos DB触发器构建Azure功能?

来自分类Dev

为 API 构建请求 JSON

来自分类Dev

在完成多个其他构建并且不触发依赖关系链后,如何在teamcity中构建项目?

Related 相关文章

  1. 1

    Jenkins JSON API-查找构建,构建环境和构建触发器API数据

  2. 2

    TeamCity REST API:使用自定义工件依赖项触发构建

  3. 3

    使用 Python 请求触发 GitLab 构建

  4. 4

    TFS 2017 更新 2 - 使用 REST API 触发拉取请求验证构建

  5. 5

    Teamcity在合并中触发构建

  6. 6

    VSTS:如何使用 REST API 获取由构建触发的版本 ID

  7. 7

    使用POST请求触发Jenkins构建

  8. 8

    使用Git触发TeamCity非确定性构建

  9. 9

    如何使用请求模块使用Python将JSON文件的内容发布到RESTFUL API

  10. 10

    如何在azure devops中触发对请求的构建和测试?

  11. 11

    如何查找通过svn commit触发的构建

  12. 12

    如何从GitHub安全触发Jenkins构建

  13. 13

    Gatsby Webhooks以及如何从Strapi触发构建

  14. 14

    如何在本地触发Gitlab CI构建?

  15. 15

    如何查找通过svn commit触发的构建

  16. 16

    Jenkins,如何在“QuietDown”期间触发构建

  17. 17

    Jenkins 何时使用构建触发器

  18. 18

    通过curl触发构建时如何设置Jenkins构建说明?

  19. 19

    如何使用CMake构建Python扩展模块?

  20. 20

    TeamCity GIt 实验室合并请求未触发构建

  21. 21

    使用TeamCity构建TeamCity

  22. 22

    TeamCity为新分支触发了太多构建

  23. 23

    TeamCity是否可以触发新的Git分支/标签的构建?

  24. 24

    更改特定C#项目时的TeamCity触发构建

  25. 25

    如何在詹金斯中使用perforce触发的构建

  26. 26

    如何使用管道插件在特定节点上触发jenkins构建?

  27. 27

    如何使用Cosmos DB触发器构建Azure功能?

  28. 28

    为 API 构建请求 JSON

  29. 29

    在完成多个其他构建并且不触发依赖关系链后,如何在teamcity中构建项目?

热门标签

归档