如何在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)'