Project import/export API
Project import/export API
在 GitLab 10.6 中 .
也可以看看:
开始新的导出.
端点还接受参数. 此参数是一个哈希,其中包含将导出的项目上载到 Web 服务器或任何 S3 兼容平台的所有必要信息. 目前,我们仅支持将二进制数据文件上传到最终服务器.
从 GitLab 10.7 开始,如果存在upload
参数,则需要upload[url]
参数.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/export" \
--data "upload[http_method]=PUT" \
--data-urlencode "upload[url]=https://example-bucket.s3.eu-west-3.amazonaws.com/backup?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIMBJHN2O62W8IELQ%2F20180312%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20180312T110328Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=8413facb20ff33a49a147a0b4abcff4c8487cc33ee1f7e450c46e8f695569dbd"
{ "message": "202 Accepted" }
注意:上载请求将与Content-Type: application/gzip
标头一起发送. 确保您的预签名 URL 将此内容作为签名的一部分.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/export"
状态可以是以下之一:
none
queued
started
finished
regeneration_in_progress
queued
状态表示已接收到导出请求,并且当前处于要处理的队列中.
started
状态表示导出过程已开始并且当前正在进行中. 它包括导出过程,对生成的文件执行的操作,例如发送电子邮件通知用户下载文件,将导出的文件上传到 Web 服务器等.
状态是在导出过程完成并且已通知用户之后.
regeneration_in_progress
是可以下载导出文件且正在处理生成新导出文件的请求.
_links
仅在导出完成时存在.
GET /projects/:id/export/download
curl --header "PRIVATE-TOKEN: <your_access_token>" --remote-header-name --remote-name "https://gitlab.example.com/api/v4/projects/5/export/download"
ls *export.tar.gz
2017-12-05_22-11-148_namespace_project_export.tar.gz
POST /projects/import
传递的覆盖参数将优先于导出文件中定义的所有值.
要从文件系统上载文件,请使用--form
参数. 这将导致 cURL 使用标题Content-Type: multipart/form-data
. file=
参数必须指向文件系统上的文件,并以@
开头. 例如:
cURL 不支持从远程服务器发布文件. 从远程服务器导入项目可以通过以下方式完成:
import requests
from io import BytesIO
s3_file = requests.get(presigned_url)
url = 'https://gitlab.example.com/api/v4/projects/import'
"path": "example-project",
"namespace": "example-group"
}
headers = {
'Private-Token': "<your_access_token>"
}
requests.post(url, headers=headers, data=data, files=files)
{ "id": 1, "description": null, "name": "api-project", "name_with_namespace": "Administrator / api-project", "path": "api-project", "path_with_namespace": "root/api-project", "created_at": "2018-02-13T09:05:58.023Z", "import_status": "scheduled", "correlation_id": "mezklWso3Za", "failed_relations": [] }
注意:可以由管理员设置最大导入文件大小,默认为 50MB. 作为管理员,您可以修改最大导入文件大小. 为此,请在” 应用程序设置” API或” 使用max_import_size
选项.
获取导入状态.
GET /projects/:id/import
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/import"
状态可以是以下之一:
none
scheduled
failed
started
finished
注意: failed_relations
的元素的字段引用失败记录,而不是关系.注意: failed_relations
数组当前限制为 100 个项目.