You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab Release-Job创建版本时下载文件为artifacts.zip而非指定MSI文件

问题

我用以下脚本配置GitLab的release-job:

release-job:  # Valid release section within the job
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest              
  script:
    - | 
      echo "Getting Artifact Link"
      ARTIFACT_URL=$(cat artifact_url.txt | tr -d '\r')
      ARTIFACT_URL=${ARTIFACT_URL:2}
      echo "BIGProjectSetup.msi download URL - $ARTIFACT_URL"
      ASSETS_LINK="{\"name\":\"BIGProjectSetup.msi\",\"url\":\"$ARTIFACT_URL\",\"link_type\":\"package\"}"
      echo "Assets link JSON - $ASSETS_LINK"
      echo "Creating Release"
      release-cli create --name "BIGProject" --tag-name "TestRelease" --description "New version of BIGProject" --assets-link "$ASSETS_LINK"
  dependencies:
    - packaging
  needs:
    - packaging 

现在遇到的问题是:在Deploy->Releases板块点击下载链接后,下载的是artifacts.zip而非BIGProjectSetup.msi。链接格式是正确的,具体为:

https://code.com/bigproject/big-project/-/jobs/17106/artifacts/download?file=build_artifacts/BIGProjectSetup.msi

请问哪里配置出错了?

解决方法
  • 问题根源是你用的GitLab artifacts下载接口不对:/artifacts/download接口默认返回整个 artifacts 压缩包,即便携带file参数也不会触发单个文件的直接下载。
  • 要直接下载单个文件,需要改用/artifacts/raw/接口,并且把原file参数里的文件路径直接拼在接口路径后,不需要?file=参数。正确的单个文件下载链接格式应为:
    https://code.com/bigproject/big-project/-/jobs/17106/artifacts/raw/build_artifacts/BIGProjectSetup.msi
    
  • 修改脚本中处理ARTIFACT_URL的逻辑,替换链接格式即可,修改后的脚本片段如下:
    script:
      - | 
        echo "Getting Artifact Link"
        ARTIFACT_URL=$(cat artifact_url.txt | tr -d '\r')
        ARTIFACT_URL=${ARTIFACT_URL:2}
        # 替换链接格式,适配单个文件直接下载
        ARTIFACT_URL=$(echo "$ARTIFACT_URL" | sed 's|/artifacts/download?file=|/artifacts/raw/|')
        echo "BIGProjectSetup.msi download URL - $ARTIFACT_URL"
        ASSETS_LINK="{\"name\":\"BIGProjectSetup.msi\",\"url\":\"$ARTIFACT_URL\",\"link_type\":\"package\"}"
        echo "Assets link JSON - $ASSETS_LINK"
        echo "Creating Release"
        release-cli create --name "BIGProject" --tag-name "TestRelease" --description "New version of BIGProject" --assets-link "$ASSETS_LINK"
    
  • 原理:GitLab的/artifacts/raw/接口专门用于获取单个文件的原始内容,点击后会直接触发该文件的下载,而非返回压缩包。

内容的提问来源于stack exchange,提问作者Apuna12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:33:29