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

GitLab CI遍历dist目录文件时curl报错,请求排查解决

GitLab CI流水线中for循环执行curl报错的解决方案

问题根源

  1. 单引号错误包裹命令:你的curl命令被一对单引号完全包裹,Shell会将整个字符串curl -H "X-JFrog-Art-Api: $ARTIFACTORY_PW" -XPUT "$ARTIFACTORY_IMAGE_TAG" -T dist/$file当作一个完整的命令名去系统中查找,而非执行curl命令并传递参数,这直接导致了“找不到文件或目录”的错误。
  2. 文件路径重复无效:$file变量本身已经是./dist/xxx格式的完整相对路径,你在-T参数里写成dist/$file,会生成dist/./dist/xxx这种无效路径,即使解决单引号问题,curl也会找不到要上传的文件。

修复后的脚本

script:
  - set -vux
  - ls ./dist/*
  - |
    for file in ./dist/*; do 
        if [ -f  "${file}" ]; then 
            export ARTIFACTORY_IMAGE_TAG=${DATASCIENCE_REPO}/$(basename "${file}")/${IMAGE_VERSION}
            curl -H "X-JFrog-Art-Api: ${ARTIFACTORY_PW}" -XPUT "${ARTIFACTORY_IMAGE_TAG}" -T "${file}"
        fi 
    done
dependencies:
  - package-build

修改说明

  • 移除curl命令外层的单引号,让Shell正确识别curl命令及对应参数。
  • 将-T dist/$file改为-T "${file}",使用变量自带的正确文件路径。
  • 给所有变量引用加上双引号(如${file}、${ARTIFACTORY_PW}等),避免文件名含空格等特殊字符时出现解析错误。
  • 给${IMAGE_VERSION}加上大括号,保持变量引用的一致性和可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:20:38