Gitlab的本地服务器安装版本目前为15.3.0。我已经创建了一个个人访问令牌(选择了所有作用域(,并确定了下载artifacts.zip文件的URL(登录Gitlab时可以在浏览器中使用(。
但是,当我尝试使用curl时,我总是会重定向到登录页面:
curl --header "PRIVATE-TOKEN: $TOKEN" "http://myserver/emu/myproject/-/jobs/artifacts/main/download?job=build"
导致。。
<html><body>You are being <a href="http://myserver/users/sign_in">redirected</a>.</body></html>
当然,添加-L
参数可以得到登录页面的HTML标记,而不是我想要的工件。我还通过如下调用API验证了令牌的工作原理:
curl --header "PRIVATE-TOKEN: $TOKEN" "http://myserver/api/v4/projects"
这给了我预期的JSON格式的项目列表。
我知道Gitlab的免费版有一些限制,比如JOB-TOKEN不可用。但我在文档中没有发现任何迹象表明,使用个人访问令牌下载工件需要付费版本:https://docs.gitlab.com/ee/ci/pipelines/job_artifacts.html
您必须使用curl -L --output artifacts.zip --location --header "PRIVATE-TOKEN: <YOUR_TOKEN>" "<YOUR_SERVER>/api/v4/projects/<PROJECT_ID>/jobs/artifacts/main/download?job=<BUILD_JOB_NAME>"
我希望这能解决你的问题