如何通过触发器下载提交给 gitlab 的二进制文件?
Posted
技术标签:
【中文标题】如何通过触发器下载提交给 gitlab 的二进制文件?【英文标题】:How can I download a binary file submitted to gitlab over a trigger? 【发布时间】:2021-09-29 16:03:05 【问题描述】:我想使用 curl
或类似工具将文件从外部进程推送到 Gitlab 管道。
上传文件可以通过Gitlab Trigger API request:
curl -X POST \
-F "token=$(cat .gitlab-trigger)" \
-F "ref=develop" \
-F "variables[env]=qua" \
-F "bundle=@bundle.zip" \
https://gitlab.company.com/api/v4/projects/1234/trigger/pipeline
管道作业然后可以访问TRIGGER_PAYLOAD 文件,类似于:
"ref": "develop",
"variables":
"env": "qua"
,
"bundle":
"filename": "bundle.zip",
"type": "application/octet-stream",
"name": "bundle",
"tempfile": "#\u003cFile:0x00007fcc8b7581e0\u003e",
"head": "Content-Disposition: form-data; name=\"bundle\"; filename=\"bundle.zip\"\r\nContent-Type: application/octet-stream\r\n"
,
"id": "1228"
从文件内容来看,bundle.zip
文件似乎上传到了Gitlab服务器。
如何获取bundle.zip
文件?有可能吗?
请注意
在当前目录或 TRIGGER_PAYLOAD 文件的临时父目录中找不到捆绑包和临时文件。 将有效负载文件指定为variables[bundle]
表单参数会使 Gitlab 拒绝请求,因为仅支持字符串和映射变量。
提交 token
和 variables[env]
变量作为查询参数并将 ZIP 文件添加为仅二进制有效负载(无表单参数)会导致上传失败。
【问题讨论】:
【参考方案1】:似乎无法通过触发器 API 上传文件。已向 Gitlab 发送了 new feature request。
如果您同意需要此功能,请随时推送!
【讨论】:
以上是关于如何通过触发器下载提交给 gitlab 的二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章
创建Jenkins构建触发器,代码提交至gitLab即自动触发构建
CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)