Project import/export API

Project import/export API

在 GitLab 10.6 中 .

也可以看看:

开始新的导出.

端点还接受参数. 此参数是一个哈希,其中包含将导出的项目上载到 Web 服务器或任何 S3 兼容平台的所有必要信息. 目前,我们仅支持将二进制数据文件上传到最终服务器.

从 GitLab 10.7 开始,如果存在upload参数,则需要upload[url]参数.

  1. curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/export" \
  2. --data "upload[http_method]=PUT" \
  3. --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"
  1. { "message": "202 Accepted" }

注意:上载请求将与Content-Type: application/gzip标头一起发送. 确保您的预签名 URL 将此内容作为签名的一部分.

    1. 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仅在导出完成时存在.

    1. GET /projects/:id/export/download
    1. curl --header "PRIVATE-TOKEN: <your_access_token>" --remote-header-name --remote-name "https://gitlab.example.com/api/v4/projects/5/export/download"
    1. ls *export.tar.gz
    2. 2017-12-05_22-11-148_namespace_project_export.tar.gz
    1. POST /projects/import

    传递的覆盖参数将优先于导出文件中定义的所有值.

    要从文件系统上载文件,请使用--form参数. 这将导致 cURL 使用标题Content-Type: multipart/form-data . file=参数必须指向文件系统上的文件,并以@开头. 例如:

    cURL 不支持从远程服务器发布文件. 从远程服务器导入项目可以通过以下方式完成:

    1. import requests
    2. from io import BytesIO
    3. s3_file = requests.get(presigned_url)
    4. url = 'https://gitlab.example.com/api/v4/projects/import'
    5. "path": "example-project",
    6. "namespace": "example-group"
    7. }
    8. headers = {
    9. 'Private-Token': "<your_access_token>"
    10. }
    11. requests.post(url, headers=headers, data=data, files=files)
    1. { "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选项.

    获取导入状态.

    1. GET /projects/:id/import
    1. 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 个项目.