Jira对接Prism开发API指南
部门 |
证系统运维团队 |
文档制作人 |
陈刚() |
时间 |
2017-04-05 |
版本 |
第一版 |
目录
目的... 1
通例:... 1
认证... 2
新建版本单... 2
获取指定版本单的发布单信息... 3
目的
为了提升工作效率,打通jira和prism之间的联系,让软件项目管理人员可以在jira上新建版本单,并跟踪发布进度,特在prism上制作相关API供jira调用。
通例:
l Prism的web址会因环境不同或构架变更而发生变更,jira端须提供自定义prism的api网址。
l 文档仅以根目录演示相关url。
l 演示代码主要以python为主,如果为javascript,会特别说明。
l jira端可以自行构造认证表单,将获取的token保留。或是提供用户自行配置token。
认证
认证 |
成功 |
失败 |
URL |
/api/api-token-auth/ |
|
请求方法 |
POST |
|
请求参数 |
Username, password |
|
状态码 |
200 |
400 |
返回消息 |
Json对象, 具体消息见demo |
Json对象, 具体消息见demo |
Demo:
url = "http://127.0.0.1:8000/api/api-token-auth/" payload = {'username': 'kevsin', 'password': 'xxx'} r = requests.post(url, data=payload) print r.status_code #成功200 失败 400 print r.text #成功输出:{"token":"d92bbea2a4b3bb1235badf87490ba7c980e9ebab"} #失败输出:{"non_field_errors":["无法使用提供的认证信息登录。"]} |
新建版本单
新建版本单 |
成功 |
失败 |
URL |
/api/versionpool/ |
|
请求方法 |
POST |
|
请求参数 |
Name, site_name |
|
状态码 |
201 |
400 |
返回消息 |
Json对象, 具体消息见demo |
Json对象, 具体消息见demo |
***为保证prism内版本单的名单唯一性,Prismw会自动为jira传过来的版本单号加上项目名称,以此作为prism的版本单名称
Demo:
url = "http://127.0.0.1:8000/api/versionpool/" mytoken="d92bbea2a4b3bb1235badf87490ba7c980e9ebab" headers={'Authorization': 'Token {}'.format(mytoken)} payload = {'name': '1.78.5', 'site_name': 'SIS-OMM' } r = requests.post(url, data=payload, headers=headers) print r.status_code #成功200 失败 400 print r.text #成功输出:{"create_user":"kevin","message":"创建版本单成功!","result":"success","name":"SIS-OMM-1.78.5"} #site_name不存在时输出:{"create_user":"kevin","message":"项目名不存在!","result":"failed","name":"SIS-OwMM-1.78.5"} #已有相同版本单时输出:{"create_user":"kevin","message":"已存在相同版本单","result":"failed","name":"SIS-OMM-1.78.5"} |
以下提供一个采用vue.js 2的前端框架时,创建版本单的javascript代码供参考:
submit: function() { var selected = this.selected; // 这里才是你的表单数据 var versionNo = this.versionNo; // 这里才是你的表单数据 var headers = {} var data = {} data.name = versionNo //塞入post数据 data.site_name = selected //塞入post数据 headers.Authorization = 'Token ' + this.token; //设定html的header头信息 this.$http.post(this.apiVersionListUrl, data, {headers: headers}) //发送post请求 .then(function(response){ this.result = this.versionNo + "版本新增成功!" console.log("right!") }, function(response){ console.log(response); console.log("wrong!");
}); |
获取指定版本单的发布单信息
获取指定版本单的发布单 |
成功 |
失败 |
URL |
/api/deploypool/ |
|
请求方法 |
GET |
|
请求参数 |
Site_name, version_name |
|
状态码 |
200 |
200 |
返回消息 |
返回见demo |
返回为空列表[] |
Demo:
url = "http://127.0.0.1:8000/api/deploypool/?site_name=SIS-M&version_name=SIS-M-1.78.5" r = requests.get(url) print r.text #如果传递参数正确且相关版本单内有发布单,输出如下: [ { "id": 140, //发布单ID "name": "20170308163803BR", //发布单名称 "site_name": "SIS-OMM", //发布单所属项目 "version_name": "SIS-OMM-1.78.5", //发布单所属版本单 "app_name": "SIS-OMM-JTC-APP-STATIC", //发布单所属组件 "order_no": 4, //发布单顺序 "deploy_status": "BUILD", //发布单状态 "deploy_progress": null, //发布单部署进度 "create_user": "kevin", //操作用户 "change_date": "2017-03-08T16:38:04" //操作时间 }, { "id": 136, "name": "20170302144843TA", "site_name": "SIS-OMM", "version_name": "SIS-OMM-1.78.5", "app_name": "SIS-OMM-SQL", "order_no": 8, "deploy_status": "DR", "deploy_progress": "待发布", "create_user": "kevin", "change_date": "2017-03-06T15:16:13" } ]
|