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

GitLab流水线构建Job无法上传RPM制品问题求助

解决GitLab流水线RPM制品上传失败的问题

核心问题定位

你遇到的问题根源是RPM生成路径与GitLab CI工作目录不匹配:CentOS镜像中默认执行rpmbuild会在/root/rpmbuild/目录生成文件,但GitLab CI的工作目录是$CI_PROJECT_DIR(即/builds/firstnameName/project),上传制品时会在工作目录下查找指定路径,自然找不到/root/下的文件。

具体修复方案

  • 方案1:复制RPM到工作目录
    在build阶段的脚本末尾添加复制命令,将生成的RPM转移到GitLab CI的工作目录:

    # 确认文件存在后复制
    if [ -f /root/rpmbuild/RPMS/x86_64/project-0.1-1.el8.x86_64.rpm ]; then
        cp /root/rpmbuild/RPMS/x86_64/project-0.1-1.el8.x86_64.rpm $CI_PROJECT_DIR/
    fi
    

    之后制品上传配置直接指定project-0.1-1.el8.x86_64.rpm或*.rpm即可。

  • 方案2:指定rpmbuild输出到工作目录
    执行rpmbuild时通过参数直接将RPM生成到工作目录下,避免后续复制步骤:

    rpmbuild -ba your-spec-file.spec \
      --define "_rpmdir $CI_PROJECT_DIR/rpmbuild/RPMS" \
      --define "_sourcedir $CI_PROJECT_DIR"
    

    此时上传路径可配置为rpmbuild/RPMS/x86_64/*.rpm,与你之前的配置一致,但文件实际存在于工作目录的对应子路径下。

关键注意事项

  • 制品上传路径必须是相对于GitLab CI工作目录的相对路径,绝对路径(如/root/rpmbuild/...)会被解析为工作目录下的子路径,导致找不到文件。
  • 调试时在build脚本中添加以下命令,确认文件位置:
    pwd  # 输出当前工作目录
    ls -la /root/rpmbuild/RPMS/x86_64/  # 确认RPM生成位置
    ls -la $CI_PROJECT_DIR/  # 确认工作目录下的文件
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:03:22