我尝试创建一个 bash 脚本来使用curl 从 GitLab 下载私有版本,但它不断被重定向到登录页面。
我该怎么做?
我尝试了以下方法,但没有成功:
curl --header "PRIVATE-TOKEN: XXXXXXXXX" "https://gitlab.com/mrhid6/test/-/archive/v0.0.5/test-v0.0.5.zip"
正如Win32Sector所说,这是一个bug,但这个问题已经开放了相当长的时间,并且不断被推向下一个里程碑......
作为解决方法,您可以使用 PackageRegistry 作为数据存储,然后从发布页面引用包文件,这样用户就无法识别任何内容:
启用包注册表 - 在项目 -> 设置 -> 常规 -> 可见性、项目功能、权限中勾选包。
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
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"
curl --header "PRIVATE-TOKEN: ####" "https://<your.gitlab.instance>/api/v4/projects/<PROJECT>/packages/generic/<PACKAGE-NAME>/<VERSION>/asset-file.txt"
根据错误和我的测试,这最终可以使用 Private-Token header
curl -Ssfl \
-H 'Private-Token: <PERSONAL_ACCESS_TOKEN>' \
-o <FILE_NAME> \
https://gitlab.com/<USER>/<REPO>/-/archive/<RELEASE_NAME>/<FILE_NAME>
您不能使用私有令牌来访问存储库 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