从GitLab工件存档中下载单个文件

时间:2019-02-20 12:01:41

标签: gitlab gitlab-ci gitlab-api

我正在运行GitLab CE 11.5.0,我的一项工作产生了一个我想从中下载单个文件的工件。

按照here中所述的方式将完整的工件存档下载为zip文件:

$ export TOKEN="12345678"
$ export GITLAB_HOST="gitlab.example.com"
$ export PROJECT_ID="foo"
$ export JOB_NAME="bundle"
$ curl --header "PRIVATE-TOKEN: $TOKEN" \
  "https://$GITLAB_HOST/api/v4/projects/$PROJECT_ID/jobs/artifacts/master/download?job=$JOB_NAME" -o artifacts.zip

档案内容如下:

$ unzip -l artifacts.zip
Archive:  artifacts.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   262107  02-18-2019 16:17   build/ui-bundle.zip
---------                     -------
   262107                     1 file

现在,我只想从该存档中下载一个文件,如here所述。

$ export FILE_PATH="build/ui-bundle.zip"
$ curl --header "PRIVATE-TOKEN: $TOKEN" \
  "https://$GITLAB_HOST/api/v4/projects/$PROJECT_ID/jobs/artifacts/master/raw/$FILE_PATH?job=$JOB_NAME"

但是看来Gitlab无法找到请求的文件:

{"error":"404 Not Found"}

我意识到工件档案是一个仅包含一个嵌入式zip文件的zip文件,但是我认为这没有什么区别。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

应该改进gitlab的文档。您需要对工件路径项目ID

{
  id: 15,
  name: 'MyCatalog'
}

This answer具有urlencode函数的bash实现。