如何在GitLab CI任务中通过URL下载作业产物artifacts
GitLab 流水线产物下载操作示例
你不需要安装额外工具,也不需要复杂配置,可根据项目公开属性选择对应方案操作:
公开项目(无需令牌)
公开项目的公开流水线产物可以直接下载,两种常用方式:
- 浏览器直接下载:将拿到的产物URL粘贴到浏览器地址栏回车,即可自动触发下载
- 命令行调用(使用系统默认自带的
curl,无需额外安装):
curl -O "https://<你的GitLab实例域名>/<项目命名空间>/<项目名>/-/jobs/artifacts/<目标分支名>/download?job=<产出产物的作业名称>"
私有项目/非公开产物(需简单配置访问令牌)
如果是私有项目,或者产物设置了访问权限,仅需先创建一个只读权限的访问令牌即可:
- 打开GitLab个人设置,进入「访问令牌」页面,创建一个仅勾选
read_api权限的个人访问令牌,生成后复制保存(令牌仅显示一次) - 命令行下载示例:
- 使用
curl:
curl -O --header "PRIVATE-TOKEN: <你生成的访问令牌值>" "https://<你的GitLab实例域名>/<项目命名空间>/<项目名>/-/jobs/artifacts/<目标分支名>/download?job=<产出产物的作业名称>"- 如果你已安装
wget也可以使用:
wget --header "PRIVATE-TOKEN: <你生成的访问令牌值>" "https://<你的GitLab实例域名>/<项目命名空间>/<项目名>/-/jobs/artifacts/<目标分支名>/download?job=<产出产物的作业名称>" - 使用
注意:生成访问令牌时仅勾选
read_api权限即可,不要授予更高权限降低安全风险;不要将令牌明文硬编码到公开脚本中,建议通过环境变量存储调用。
如果需要下载产物包中的单个指定文件,只需将URL末尾的download?job=<作业名>替换为raw/<文件在产物中的完整路径>?job=<作业名>即可。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

