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
相关产品推荐
相关产品推荐

