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

GitLab CI引入外部配置时无法找到bash子文件的解决方法

解决GitLab CI模板引用同目录脚本找不到的问题

当你通过include引入其他项目的CI模板时,模板里的相对路径脚本不会自动被同步到当前项目的CI环境,所以会出现找不到文件的错误,给你几个可行的解决办法:

  • 同时引入模板和依赖脚本
    修改你的include配置,把模板文件和它依赖的utils-functions.sh一起引入,GitLab会把这两个文件都下载到当前CI环境的工作目录,模板里的相对路径引用就能正常生效。示例配置:

    include:
      - project: 'my-group/my-project'
        ref: main
        file: '.gitlab-ci-template.yml'
      - project: 'my-group/my-project'
        ref: main
        file: 'utils-functions.sh'
    

    注意要保证file的路径和模板里引用脚本的路径完全匹配,比如模板里写的是source ./utils-functions.sh,那引入的脚本路径就没问题。

  • 在模板Job中克隆源项目获取脚本
    如果不想修改主项目的include配置,可以调整.gitlab-ci-template.yml里的Job步骤,先克隆包含脚本的源项目,再执行脚本。示例:

    # .gitlab-ci-template.yml中的Job示例
    demo-job:
      script:
        - git clone https://gitlab.com/my-group/my-project.git --branch main --depth 1
        - cd my-project
        - source utils-functions.sh
        # 这里写后续的CI步骤
    

    这种方法需要CI Runner有访问该项目的Git权限,而且会增加流水线的运行时间,适合临时应急场景。

  • 将脚本内容直接嵌入CI模板
    如果utils-functions.sh的代码量不大,直接把脚本里的函数或逻辑复制到模板文件中,彻底消除文件依赖。示例:

    # .gitlab-ci-template.yml示例
    demo-job:
      script:
        - |
          # 直接把utils-functions.sh里的内容贴在这里
          check_env() {
            echo "Checking environment variables..."
            # 具体逻辑
          }
        - check_env
        # 后续CI步骤
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:52:05