从 GitLab 工件存档下载单个文件
Download a single file from GitLab artifacts archive
我是 运行 GitLab CE 11.5.0,我的一项工作生成了一个工件,我想从中下载一个文件。
将完整的工件存档下载为 zip 文件,其工作方式与描述的一样here:
$ 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 文件,但我认为这不会有什么不同。
有人能帮忙吗?
gitlab的文档有待完善。您需要对 工件路径 和 项目 ID:
进行 urlencode
$ export TOKEN="12345678"
$ export GITLAB_HOST="gitlab.example.com"
$ export PROJECT_ID="foo"
$ export URLENCODED_PROJECT_ID="foo"
$ export JOB_NAME="bundle"
$ export FILE_PATH="build/ui-bundle.zip"
$ export URLENCODED_FILE_PATH="build%2Fui-bundle.zip"
$ curl --header "PRIVATE-TOKEN: $TOKEN"\
"https://$GITLAB_HOST/api/v4/projects/$URLENCODED_PROJECT_ID/jobs/artifacts/master/raw/$URLENCODED_FILE_PATH?job=$JOB_NAME"
This answer 有一个 bash urlencode 函数的实现。
如果他们改变路线,学习下载的一个简单方法 URL 是转到所需的文件并将鼠标悬停在您要下载的文件上:
在底部,您可以看到下载 link 按钮引导您。在这种情况下,它的格式为:
我是 运行 GitLab CE 11.5.0,我的一项工作生成了一个工件,我想从中下载一个文件。
将完整的工件存档下载为 zip 文件,其工作方式与描述的一样here:
$ 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 文件,但我认为这不会有什么不同。
有人能帮忙吗?
gitlab的文档有待完善。您需要对 工件路径 和 项目 ID:
进行 urlencode$ export TOKEN="12345678"
$ export GITLAB_HOST="gitlab.example.com"
$ export PROJECT_ID="foo"
$ export URLENCODED_PROJECT_ID="foo"
$ export JOB_NAME="bundle"
$ export FILE_PATH="build/ui-bundle.zip"
$ export URLENCODED_FILE_PATH="build%2Fui-bundle.zip"
$ curl --header "PRIVATE-TOKEN: $TOKEN"\
"https://$GITLAB_HOST/api/v4/projects/$URLENCODED_PROJECT_ID/jobs/artifacts/master/raw/$URLENCODED_FILE_PATH?job=$JOB_NAME"
This answer 有一个 bash urlencode 函数的实现。
如果他们改变路线,学习下载的一个简单方法 URL 是转到所需的文件并将鼠标悬停在您要下载的文件上:
在底部,您可以看到下载 link 按钮引导您。在这种情况下,它的格式为: