如何解决是否有任何选项可以使用 curl/python 请求获取 GitLab 管道的持续时间?
我正在尝试获取 GitLab 管道的持续时间。我的 GitLab 版本是 12.10。我可以获得管道的状态:
{
"id": 7475,"sha": "someid","ref": "Someref","status": "success","created_at": "2021-04-28T12:07:17.807Z","updated_at": "2021-04-28T12:07:36.071Z","web_url": "https://git.somedomain.net/infra/some_project/pipelines/7475","before_sha": "0000000000000000000000000000000000000000","tag": false,"yaml_errors": null,"user": {
"id": 85,"name": "some.name","username": "some.name","state": "active","avatar_url": "https://secure.gravatar.com/avatar/someid?s=80&d=identicon","web_url": "https://git.somedomain.net/some.name"
},"started_at": null,"finished_at": "2021-04-28T12:07:36.070Z","committed_at": null,"duration": null,"coverage": null,"detailed_status": {
"icon": "status_success","text": "passed","label": "passed","group": "success","tooltip": "passed","has_details": false,"details_path": "/infra/some_project/pipelines/7475","illustration": null,"favicon": "/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png"
}
}
是否可以选择获取管道持续时间?或者,如何在python中获得"finished_at": "2021-04-28T12:07:36.070Z"
和"created_at": "2021-04-28T12:07:17.807Z"
之间的差异的持续时间?
解决方法
状态字典中有几个值可以在您的代码中预定义,例如:
false = False
null = None
然后你可以这样做:
status = { "id": 7475,"sha": "someid","ref": "Someref","status": "success","created_at": "2021-04-28T12:07:17.807Z","updated_at": "2021-04-28T12:07:36.071Z","web_url": "https://git.somedomain.net/infra/some_project/pipelines/7475","before_sha": "0000000000000000000000000000000000000000","tag": false,"yaml_errors": null,"user": { "id": 85,"name": "some.name","username": "some.name","state": "active","avatar_url": "https://secure.gravatar.com/avatar/someid?s=80&d=identicon","web_url": "https://git.somedomain.net/some.name" },"started_at": null,"finished_at": "2021-04-28T12:07:36.070Z","committed_at": null,"duration": null,"coverage": null,"detailed_status": { "icon": "status_success","text": "passed","label": "passed","group": "success","tooltip": "passed","has_details": false,"details_path": "/infra/some_project/pipelines/7475","illustration": null,"favicon": "/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png" } }
然后使用 datetime
模块:
-
将字符串转换为日期时间对象(参考:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes),以及
-
进行持续时间计算。
import datetime as dt
format_str = '%Y-%m-%dT%H:%M:%S.%fZ'
created_at = dt.datetime.strptime(status['created_at'],format_str)
finished_at = dt.datetime.strptime(status['finished_at'],format_str)
duration = finished_at - created_at
结果:
In [24]: duration
Out[24]: datetime.timedelta(seconds=18,microseconds=263000)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。