我想知道Gitlab的REST或GraphQL API(Gitlab社区版15.11.2)中是否有一种方法可以在将图像保存在LFS(大文件存储)中的同时提交图像。我知道有一个终点
https://gitlab.com/api/v4/projects/{project_id}/repository/commits
可以用来提交文件,但似乎不支持自动保存正在提交到LFS的文件。不幸的是,与 gitlab 的 LFS 的任何交互似乎都是通过 CLI 进行的。
一些解决方案建议向
发出请求/api/v4/projects/{project_id}/lfs/objects
首先上传文件的端点,然后使用从响应中检索到的OID和LFS指针来调用前面提到的/repository/commits端点。然而,它似乎也不起作用。
我的唯一目标是将使用 REST 或 GraphQL API 提交的文件保存在 LFS 存储中。我正在考虑任何其他方法来实现这一目标,包括使用 gitlab 的 CI 管道、cron 脚本或我可能不知道的任何其他方法。
根据Commits API,您可以通过以下方式推送/更新LFS文件:
action: delete
首先是 LFS 文件(如果您想更新而不是新建)action: create
您需要的文件因此,请求负载将是:
{
"branch": "main",
"commit_message": "msg",
"actions": [
{
"action":"delete",
"file_path":"YOUR_LFS_PATH"
},
{
"action":"create",
"file_path":"YOUR_LFS_PATH",
"content": LFS_CONTENT_IN_BASE64_ENCODED
"encoding":"base64"
}
]
}
update
的技巧是使用delete + create
而不是普通的update
。