文章目录

  • 概述
  • 常见使用原则
  • 认证方式
  • 常见对象和常见定位器
    • ProjectLocator
    • BuildTypeLocator
    • BuildLocator
  • URL 结构
  • 定位器(通常返回一个对象)
  • 支持的HTTP方法
  • 响应格式
    • 完全响应和部分响应
  • 日志

概述

Teamcity提供REST API目的:整合外部应用,与TeamCity server建立脚本化交互。REST API可以使用URL路径访问资源。为了使用REST API,需要一个外部应用向TeamCity server发出HTTP请求,然后解析响应。

常见使用原则

1)http://<TeamCity Server host>:<port>/app/rest/server #给出一些可以访问的对象。这很重要,给出了可以访问的对象。!!!!
例如:
http://10.10.10.10:8001/app/rest/server 2)http://<TeamCity Server host>:<port>/app/rest/agents #获取所有的授权agent的列表
3)http://<TeamCity Server host>:<port>/app/rest/agents/id:100 #获取id为100的agent的信息
4)http://<TeamCity Server host>:<port>/app/rest/agents/$help #获取哪些可以定位特定agent的属性有哪些!!!!
#注意:$help前的对象需要是复数形式。如 http://<TeamCity Server host>:<port>/app/rest/buildQueue/$help访问失败。此时用aa:bb代替$help即可。
5)上述4)返回的大多属性可以用于<field_name>。即支持下面这种请求格式:
http://<TeamCity Server host>:<port>/app/rest/agents/<agentLocator>/<field_name>

认证方式

这里以powershell中Invoke-RestMetho 访问rest api为例。
1.推荐的认证方式是:token-based HTTP authentication
$apiKey = “aaa0eczczc1emVEMkNjUGdffdfddddd9r.ODljN2UyNjktNDA1Mi00OGQzLTg3NDEtOWYwYzhmNjliYTY5”
$headers = @{}
$headers.Add(“Authorization”,“Bearer $apiKey”)
Invoke-RestMethod -Headers $headers -Uri “http://:/app/rest/agents”
其中$apiKey的在Teamcity UI的生成方式:My Settings & Tools | Access Tokens
2.用户名,密码认证(基本的http认证,慢)
$currentUser = “xxx”
$currentPassword = “xxxx”
$pass = ConvertTo-SecureString -AsPlainText $currentPassword -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList currentUser,currentUser,currentUser,pass
Invoke-RestMethod -Credential $Cred -Uri "http://<TeamCity Server host>:<port>/httpAuth/app/rest/buildTypes

常见对象和常见定位器

url 定位器 说明
http://<TeamCity Server host>:<port>/app/rest/projects id, internalId, uuid, project, affectedProject, name, archived, build, buildType, defaultTemplate, vcsRoot, projectFeature, pool, $singleValue, start, count
http://<TeamCity Server host>:<port>/app/rest/builds id, taskId, project, affectedProject, buildType, branch, agent, agentName, agentTypeId, user, personal, state, tag, property, compatibleAgent, number, status, canceled, pinned, queuedDate, startDate, finishDate, sinceBuild, sinceDate, untilBuild, untilDate, failedToStart, snapshotDependency, artifactDependency, hanging, composite, history, defaultFilter, $singleValue, start, count, lookupLimit]
http://<TeamCity Server host>:<port>/app/rest/buildQueue id, taskId, project, buildType, agent, user, personal, $singleValue, star
http://<TeamCity Server host>:<port>/app/rest/agents id, name, connected, authorized, enabled, parameter, ip, pool, build, compatible, $singleValue, start, count
http://<TeamCity Server host>:<port>/app/rest/users id,username,group,affectedGroup,property,email,name,lastLogin,role id是内部用户id,数字类型;property 是用户的属性,值是参数条件
http://<TeamCity Server host>:<port>/app/rest/userGroups
http://<TeamCity Server host>:<port>/app/rest/agentPools
http://<TeamCity Server host>:<port>/app/rest/investigations
http://<TeamCity Server host>:<port>/app/rest/mutes
http://<TeamCity Server host>:<port>/app/rest/vcs-roots

2.不同类型的定位器
完整定位器

ProjectLocator

属性名 值类型 说明和实例
name project name 找到特定名字的project
affectedProject ProjectLocator 值是上层的项目名。值的类型是ProjectLocator,是一种递归定义。用来找子项目。如http://<TeamCity Server host>:<port>/app/rest/projects?locator=affectedProject:(name:aa),会搜索aa的子项目
Project ProjectLocator 值是父项目的名字,用来找子项目
build BuildLocator build定位器
buildType buildTypeLocator build type定位器
count 整数 对于分页调用,指明每页返回多少个实体(entity)
item item:(<locator1>),item:(<locator2>…) 提供多个定位器,返回一组结果
projectFeature ProjectLocator 项目特征定位器
start 整数 对于分页调用,从那个实体开始呈现页面

BuildTypeLocator

和 ProjectLocator共有的属性:affectedProject,project,build,count,item,start

属性名 值类型 说明和实例
name string 值是目标build的类型的名字,如http://<TeamCity Server host>:<port>/app/rest/buildTypes/name:aa/triggers,获取aa这个build的触发器
paused 布尔类型 值是true,false

BuildLocator

和 ProjectLocator共有的属性:affectedProject,project,buildType,count,item

属性名 值类型 说明和实例
agent AgentLocator 值是agent定位器
any 布尔类型 描述State
canceled 布尔类型 build被取消
compatibleAgent AgentLocator 值是agent定位器
defaultFilter 布尔类型 值为true时,只返回通常的build(已经完成的,且未被取消,不是没开始的,不是个人的,在默认分支上的)
failedToStart 布尔类型 没能开始而失败的的build
finishDate string date:<yyyyMMddTHHmmss+ZZZZ>,build:<build locator>,condition:<before/after>
finished 布尔类型 build已经完成
hanging 布尔类型 build悬挂了
history 布尔类型 是历史build
lookupLimit 整数 返回最近的几个结果,值指明返回几个结果。如http://<TeamCity Server host>:<port>/app/rest/buildTypes/name:buildName/builds?locator=lookupLimit:1&fields=build(startDate),返回最近buildName最近一次build的启动时间。
pinned 布尔类型 is pinned
property property:(name:<name>,value:<value>,matchType:<matchType>)
queued 布尔类型 true表示在排队
running 布尔类型 true表示运行
startDate date:<yyyyMMddTHHmmss+ZZZZ>,build:<build locator>,condition:<before/after> 返回日期,或者返回build dimension
queuedDate 同上 同上
state string 值可以是:queued,running,finished,any
status string 值可以是FAILURE,SUCESS,UNKNOWN(从未运行过)
tag TagLocator 标签定位器

URL 结构

http://<TeamCity Server host>:<port>/<authType>/app/rest/<apiVersion>/<restApiPath>?<parameters>说明
<TeamCity Server host>和<port>:通常是TeamCity server机器的ip和服务端口
<authType>:说明认证类型。如httpAuth,guestAuth等等。(可选)
app/rest:是TeamCity REST API的根路径
<apiVersion>:指明REST API的版本(可选)
<span style="color: red;"><restApiPath>?<parameters>:是整个URL中REST API部分。通常,获取获取多个对象使用:.../app/rest/<items>,如.../app/rest/builds,.../app/rest/projects等。
这类URL通常接收定位器参数,定位器用来过滤返回的对象。然而.../app/rest/<items>/<item_locator>这类URL返回的是单独对象。若item_locator匹配了多个对象,会返回第一个。!!!
多个或单个对象的请求通常使用fileds参数。!!!

定位器(通常返回一个对象)

官方文档
定位器有两种格式,但格式都是
属性名:属性值

单属性定位器:不含,:-( )这些字符即可。若此时,属性值含有逗号,需要用圆括号括起来。

例如:…/app/rest/projects获取多个project。而.../app/rest/projects/<projectsLocator>则可以获取对应属性的project。如http://<TeamCity Server host>:<port>/app/rest/projects/name:aaa 获取名字为aaa的project。

多属性定位器:用逗号隔开多个属性。一般格式如下:

<dimension1>:<value1>,<dimension2>:<value2>,<dimension3>:(<dimension3.1>:<value3.1>,<dimension3.2>:<value3.2>)#dimension1是属性名,value1是属性值。<dimension2>:<value2>这一组一样。<dimension3>:(<dimension3.1>:<value3.1>,<dimension3.2>:<value3.2>)指明了一个嵌套的属性,要用圆括号括起来。即具有属性dimension3的对象中,又有属性dimension3.1,dimension3.2
注意:如果属性值中有逗号,应该用()包裹起来。

例如:

http://<TeamCity Server host>:<port>/app/rest/buildTypes/id:bt284/<items>?locator=<dimension1>:<value1>,<dimension2>:<value2>
如
http://<TeamCity Server host>:<port>/app/rest/buildTypes/id:bt284/builds?locator=status:SUCCESS,tag:EAP
http://<TeamCity Server host>:<port>/app/rest/builds/?locator=<buildLocator>

支持的HTTP方法

GET:取回数据
POST:创建一个资源
PUT:更新资源
DELETE:删除资源

响应格式

REST API根据HTTP ‘Accept’ header的值,返回的对象格式有:普遍文本(返回单一值),xml和json,后两者返回的都是复杂值。
HTTP接受的头格式分别为:text/plain,application/xml,application/json

完全响应和部分响应

默认的,请求一列实体时,只有基本字段会被包含在响应中。请求一个单独的入口时,所有字段都会包含在响应中。是返回基本字段还是所有字段,取决于一个特定的实体。
对于返回xml和json格式的情况,通过提供fields请求参数请求参数即可。fields请求参数描述的是top-entity和sub-entity的fields。参数语法示例:

field,field2(field2_subfield1,field2_subfield1)
即:包含top-entity的field和field2,对field,包含了field2_subfield1,field2_subfield1,顺序不重要。
http://teamcity.jetbrains.com/app/rest/buildTypes?locator=affectedProject:(id:TeamCityPluginsByJetBrains)&fields=buildType(id,name,project)http://teamcity.jetbrains.com/app/rest/builds?locator=buildType:(id:bt345),count:10&fields=count,build(number,status,statusText,agent,lastChange,tags,pinned)

日志

rest api请求访问日志(包括错误信息)可以在logs\teamcity-rest.log中看到。
官方说明

TeamCity REST API相关推荐

  1. Teamcity REST API(二)

    0.teamcity内置的有用的变量 "%system.teamcity.buildType.id%" "%system.teamcity.projectName%&qu ...

  2. vs 调试 无法加载自定义可视化工具_推荐 5 款好用的REST API工具

    作者 | Marta Krzyk 首发|架构头条 译者 | 王强 策划 | 小智 市面上可用的 REST API 工具选项有很多,我们来看看其中一些开发人员最喜欢的工具. 1 API 定义 Swagg ...

  3. teamcity mysql 配置_TeamCity : Build 基本配置

    前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...

  4. C++ API设计笔记

    <C++ API设计>原英文版由Martin Reddy著,中文版出版于2013年,这里是中文版的笔记. 1. API简介 1.1 什么是API:API(Application Progr ...

  5. 软件测试八款优秀的API安全测试工具,会用三款工作效率能提升50%

    Postman Postman完全具备作为API测试工具的资格,但其更为人所知的名号却是打造安全API的全套协作平台.数百万Windows.Linux和iOS开发人员使用Postman不是没有原因的. ...

  6. 分享几款超好用的 REST API 工具

    大家好,我是辰哥 市面上可用的 REST API 工具选项有很多,我们来看看开发人员最喜欢的一些工具. 1API 定义 Swagger Editor 是图形可视化的流行选项.你可以使用 JSON 或 ...

  7. 十分钟熟知Gitlab API

    https://www.jianshu.com/p/ab377b7a156f?from=groupmessage 前言 Gitlab作为一个开源.强大的分布式版本控制系统,已经成为互联网公司.软件开发 ...

  8. TeamCity的安装(docker) 构建 和 部署 (1)

    目录 前言 安装teamCity 配置安装docker镜像 初始化 安装teamAgent 官方docker方式安装 我的agent docker镜像 agent的配置文件 配置构建和使用 创建构建项 ...

  9. TeamCity+Gradle实现自动构建App安装包和补丁包

    相信大家在用AS打包的时候,最烦的就是打包要很久,如果可以自动化打包岂不是很方便,所以我之前也是被安排做了这个任务.利用TeamCity+Gradle去实现自动构建App安装包和补丁包,这里做个记录. ...

最新文章

  1. python不知道错在哪里怎么办_python怎么处理错误和异常
  2. 堆的C语言实现——堆与堆排序(二)
  3. 零基础带你五行代码实现聊天机器人-再这么玩?咱还能做朋友吗?
  4. 4-1:shell编程之编写第一个shell脚本
  5. wordpress 调用css,WordPress调用CSS最常用的方法有哪些?
  6. 高德地图画带箭头的线_模具装配图画成这样,那才真的叫标准!
  7. DNS 正向查找与反向查找
  8. IDEA创建JSP项目
  9. go编译文件带上图标
  10. 计算机开机最快,电脑开机速度,最快几秒?
  11. 老米之家域名投资是什么?域名怎么购买?域名的购买方式?
  12. android应用apn.xml,android之APN
  13. A-star 算法原理分析
  14. 批量抠图,只需要这几行python代码!
  15. 物联网设备固件分析:Firmadyne固件模拟环境搭建
  16. 十二个小球,一个坏球,3次比较找出坏的那个
  17. perl调用linux命令输出数组,当perl脚本运行时,从命令行上传递给它的参数存储在内建数组 中,它是PERL默认用来接收参数的数组...
  18. 扑克牌用java实现_用java开发的扑克牌游戏程序源代码
  19. 语音识别关键词,如何获取房产成交信息?
  20. Python+Django毕业设计智能仓储设备管理系统(程序+LW+部署)

热门文章

  1. 如何解除win7共享连接数目20限制?“达到连接数目限制”的解决方法
  2. ubuntu18.04安装编译运行PL-SLAM
  3. 第4回 哟,编程比编草鞋赚得多!
  4. 卡西欧CDP-100对战雅马哈镎-30 - 数码钢琴的比较
  5. IPC设备产生呼吸效应
  6. 卜若的代码笔记-一周速通LayaAir-第三章:给Button添加事件
  7. 深度学习之:什么是流形(manifold)?流形空间,流形学习
  8. 快手小哥风雨求职路之简历篇
  9. Vue 组件间通信方式汇总,总有一款适合你( 附项目实战案例 )
  10. iOS 组件化的三种方案