如何通过触发器下载提交给 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 拒绝请求,因为仅支持字符串和映射变量。 提交 tokenvariables[env] 变量作为查询参数并将 ZIP 文件添加为仅二进制有效负载(无表单参数)会导致上传失败。

【问题讨论】:

【参考方案1】:

似乎无法通过触发器 API 上传文件。已向 Gitlab 发送了 new feature request。

如果您同意需要此功能,请随时推送!

【讨论】:

以上是关于如何通过触发器下载提交给 gitlab 的二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

创建Jenkins构建触发器,代码提交至gitLab即自动触发构建

CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)

如何将值传递给 Gitlab CI 作业

jenkins结合gitlab实现提交代码自动构建

gitlab提交代码push,触发jenkins构建

在gitlab通过webhook触发Jenkins的job中用script获取当前分支