如何在Gitlab中以编程方式上传文件

643 阅读1分钟

如何在Gitlab中以编程方式上传文件

Docker完整开发工作流程的最后一块是将templenv生成的文件上传到产生它的合并请求中。让我们看看如何使用Gitlab的API来完成这一切。

代号

首先需要的是获得用于所有请求的令牌,访问https://gitlab.domain/profile/account ,我们假设这个令牌是ABCDEFG

获得项目ID

由于文件将被上传到一个项目,并且注释(评论)将被添加到该项目中的合并请求,我们必须首先获得项目ID。

curl -i -k -H "PRIVATE-TOKEN: ABCDEFG" \
  "https://gitlab.domain/api/v3/projects/namespace%2Frepo" -X GET

这应该输出一个包括项目ID的JSON,这个ID将被用于接下来的API调用。让我们假设,这个ID是9999。

上传文件

如果我们想上传一个文件,我们将使用这样的方法。

curl -i -k -H "PRIVATE-TOKEN: ABCDEFG" \
  "https://gitlab.domain/api/v3/projects/9999/uploads" -X POST -F 'file=@docker-compose.xml'

这应该会返回一个包括markdown的JSON,以便在接下来的调用中使用,给合并请求添加注释。

获取合并请求的ID

假设我们有一个1234合并请求,在这个项目中是9999,我们将使用API首先获得ID,像这样。

curl -i -k -H "PRIVATE-TOKEN: ABCDEFG" \
  "https://gitlab.domain/api/v3/projects/9999/merge_requests?iid=1234" -X GET

这也会返回一个JSON,让我们假设这个合并请求的ID是4567

在合并请求中创建注释

最后,我们将需要创建注释并添加链接文件,像这样。

curl -i -k -H "PRIVATE-TOKEN: ABCDEFG" \
  "https://gitlab.domain/api/v3/projects/9999/merge_requests/4567/notes" \
  -X POST \
  -F 'body=Link to file [docker-compose.yml](/uploads/9125e38ea55c5415a294af6c463f9af5/docker-compose.yml)'