如何通过curl从GitLab下载发布资产

问题描述 投票:0回答:4

我尝试创建一个 bash 脚本来使用curl 从 GitLab 下载私有版本,但它不断被重定向到登录页面。

我该怎么做?

我尝试了以下方法,但没有成功:

curl --header "PRIVATE-TOKEN: XXXXXXXXX" "https://gitlab.com/mrhid6/test/-/archive/v0.0.5/test-v0.0.5.zip"
curl gitlab
4个回答
5
投票

正如Win32Sector所说,这是一个bug,但这个问题已经开放了相当长的时间,并且不断被推向下一个里程碑......

作为解决方法,您可以使用 PackageRegistry 作为数据存储,然后从发布页面引用包文件,这样用户就无法识别任何内容:

  1. 启用包注册表 - 在项目 -> 设置 -> 常规 -> 可见性、项目功能、权限中勾选

  2. 通过Package API上传包:

 curl --header "PRIVATE-TOKEN: ####" --upload-file /local/file/asset-file.txt https://<your.gitlab.instance>/api/v4/projects/<PROJECT>/packages/generic/<PACKAGE_NAME>/<VERSION>/asset-file.txt
  1. 使用 Releases API 添加指向发布页面的链接:
curl --request POST --header "PRIVATE-TOKEN: ####" --data name="My asset name" --data link_type="package" --data url="https://<your.gitlab.instance>/api/v4/projects/<PROJECT>/packages/generic/<PACKAGE-NAME>/<VERSION>/asset-file.txt" "https://<your.gitlab.instance>/projects/<PROJECT>/releases/<VERSION>/assets/links"
  1. 然后通过单击 GitLab 中的链接(用户已登录)或使用访问令牌和 Packages API 下载您的资产:
curl --header "PRIVATE-TOKEN: ####" "https://<your.gitlab.instance>/api/v4/projects/<PROJECT>/packages/generic/<PACKAGE-NAME>/<VERSION>/asset-file.txt"

3
投票

Gitlab 说这是 bug =(

https://gitlab.com/gitlab-org/gitlab-ce/issues/62307

我也想下载资源。


0
投票

根据错误和我的测试,这最终可以使用 Private-Token header

curl -Ssfl \
    -H 'Private-Token: <PERSONAL_ACCESS_TOKEN>' \
    -o <FILE_NAME> \
    https://gitlab.com/<USER>/<REPO>/-/archive/<RELEASE_NAME>/<FILE_NAME>

-2
投票

您不能使用私有令牌来访问存储库 zip 文件。

检查https://docs.gitlab.com/ee/api/repositories.html#get-file-archive,你应该使用这个:

curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.com/api/v4/projects/mrhid6%2Ftest/repository/archive.zip
© www.soinside.com 2019 - 2024. All rights reserved.