家里有个NAS,每日定时执行脚本。
脚本在其他电脑上编写,并用git进行版本管理,git托管为Codeup(阿里云效)上创建的私有代码库。
现在需求是,每次执行前,从Codeup上检查脚本是否更新,如有更新则下载。
解决方法想到两种:
-
NAS上安装git,然后每次执行脚本前,先git同步到最新
-
检查这个脚本在Codeup上最后一次的更新时间,如果有更新则下载。
方法1由于脚本是和其他很多东西保存在一起,git没办法从私有库单抓一个文件更新。
所以开始研究方法2
一开始的思路的是直接selenium+requests的方法,selenium实现网页模拟登陆,提取cookies,然后requests回到我熟悉的网页操作上来,结果模拟到登录环节发现有滑动验证,也不是不能做,只是这个时候我突然发现了Codeup有API!
我汗(lll¬ω¬) ,有API还折腾啥,直接上API吧。
这里说一下,目前阿里云OpenAPI正在新旧版迭代更新期间,有些地方的链接是失效的或注释缺失,我也是找了一会儿才找对地方,并且把参数凑齐。
首先是Codeup的API页面
https://next.api.aliyun.com/api/codeup/2020-04-14/GetFileBlobs?sdkStyle=old¶ms={}
要实现上述功能涉及到两个API接口
-
查询代码库提交列表:检查文件更新
-
查询文件内容:下载文件内容
先安装SDK依赖
然后
点击获取AK https://usercenter.console.aliyun.com/#/manage/ak
,生成accessKeyId、accessSecret参数
然后开始找对应的API,首先是看官网文档,新版目前文档暂时还是缺失参数注释的。
没办法,回到Codeup页面,直接F12,看了几条GET,POST记录,大概弄懂了并找出了这些参数值,这里教你在一个页面内找出上述参数。
参数填好,点击发起调用,查看返回结果
确认成功,即可返回SDK示例页面,将自动生成的代码复制出来
通过前面提到这两个API接口,就可以实现通过API检查Codeup云端文件更新状态并下载的功能了。
最终代码:
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import json
import datetime,time
import os
accessKeyId = ""
accessSecret = ""
ProjectId =
OrganizationId = ""
Ref = ""
FilePath = ""
LocalPath = "本地文件位置"
client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')
request = CommonRequest()
request.set_accept_format('json')
request.set_method('GET')
request.set_protocol_type('https')
request.set_domain('codeup.cn-hangzhou.aliyuncs.com')
request.set_version('2020-04-14')
request.set_content('''{}'''.encode('utf-8'))
request.add_header('Content-Type', 'application/json')
request.add_query_param('OrganizationId', OrganizationId)
request.add_query_param('RefName', Ref)
request.set_uri_pattern(f'/api/v4/projects/{ProjectId}/repository/commits')
request.add_query_param('Path', FilePath)
response = client.do_action_with_exception(request)
j = json.loads(str(response, encoding = 'utf-8'))
committed_date = j['Result'][0]['CommittedDate']
fileDatetimeCodeup = datetime.datetime.strptime(committed_date,'%Y-%m-%dT%H:%M:%S%z').replace(tzinfo=None)
fileDatetimeLocal = datetime.datetime.fromtimestamp(os.path.getmtime(LocalPath))
if fileDatetimeCodeup > fileDatetimeLocal:
request = CommonRequest()
request.set_accept_format('json')
request.set_method('GET')
request.set_protocol_type('https')
request.set_domain('codeup.cn-hangzhou.aliyuncs.com')
request.set_version('2020-04-14')
request.set_content('''{}'''.encode('utf-8'))
request.add_query_param('OrganizationId', OrganizationId)
request.add_query_param('FilePath', FilePath)
request.add_query_param('Ref', Ref)
request.add_header('Content-Type', 'application/json')
request.set_uri_pattern(f'/api/v4/projects/{ProjectId}/repository/blobs')
response = client.do_action_with_exception(request)
j = json.loads(str(response, encoding = 'utf-8'))
with open(LocalPath,'w',encoding='utf-8') as f:
f.write(j['Result']['Content'])
额外补充:
虽然用来下载脚本没问题。但是官网这个utf-8转码很奇怪,
所以我将FilePath换了一个图片的地址,再试果然出问题了,获取到的图片打不开了。
查看获取到的Content,发现返回内容是被utf-8格式文本形式读取过的。
结果就跟用文本编辑器打开图片再保存一样,直接乱码了。至于图片或非utf-8格式应该怎么读,官网文档没写,暂时我也不清楚应该如何调整参数。
需求家里有个NAS,每日定时执行脚本。脚本在其他电脑上编写,并用git进行版本管理,git托管为Codeup(阿里云效)上创建的私有代码库。现在需求是,每次执行前,从Codeup上检查脚本是否更新,如有更新则下载。解决方法想到两种:NAS上安装git,然后每次执行脚本前,先git同步到最新检查这个脚本在Codeup上最后一次的更新时间,如果有更新则下载。方法1由于脚本是和其他很多东西保存在一起,git没办法从私有库单抓一个文件更新。所以开始研究方法2一开始的思路的是直接selenium
欢迎选择云效,你可以使用云效开放 API 来管理和开发
一章节:快速入门
本章节以 CreateRepository 为例,为你演示如何通过 OpenAPI Explorer 和阿里云 SDK 等开发者工具调用Codeup API。
调用 API 时,你可以根据 API 文档了解使用说明,并查询必选的请求参数。发送请求后报错时,你可以在相应API 文档中获取错误码说明。
OpenAPI Explorer示例:适用于习惯交互式操作界面的场景,或者初次使用阿里云产品的开发者用户。你可以在Op
1- 本地新建一个文件夹,进入文件夹下面右击打开git
2- Git init初始化一个.git文件夹
3- Git clone git@code.aliyun.com:username/space-web.git(git地址)从阿里云上面克隆代码, git clone -b xxxx URL这样为克隆指定分支代码
4-cd进入到下载的文件夹里面
4- 修改文件,或者把修改好的...
文章目录云效软件测试和质量保证1. 云效平台测试管理功能介绍2. 云效测试用例3. 云效测试计划4. 云效测试用例执行与报告
云效软件测试和质量保证
1. 云效平台测试管理功能介绍
1. 测试管理简介:
云效的「测试管理」功能包含对测试计划与执行用例的创建、编辑、规划与关联等功能,让测试人员可以直接在云效的项目中进行测试工作的规划和执行进展反馈,并将「测试计划」与「需求」和「缺陷」一起进行管理。
– 测试用例用于管理和组织手工用例,支持方便快捷编辑和查看用例。
– 测试计划用于规划和执行手工用例。测试计划