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

GitHub Action读取.github目录脚本提示文件不存在问题排查

问题原因及解决办法

错误的核心原因是checkout步骤指定了path: master参数,这会把代码仓库的所有文件检出到当前工作目录下的master子目录中,而不是默认的当前工作目录。你后续执行cat .github/my_script.sh时,是在当前工作目录查找文件,自然找不到——实际文件路径是master/.github/my_script.sh。

解决办法有两种:

  • 方法一:移除path参数(推荐)
    让代码直接检出到当前工作目录,这样后续的路径就和本地一致了:

    jobs:
        main:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v3
            # 移除with中的path配置
            - name: Set sync script in env
              run: |
                myscript=$(cat .github/my_script.sh) 
                echo "::set-env name=MY_SCRIPT::$myscript"
    
  • 方法二:使用正确的文件路径
    如果必须保留path: master,则需要在读取文件时指定完整路径,或者先切换到目标目录:

    # 指定完整路径的写法
    - name: Set sync script in env
      run: |
        myscript=$(cat master/.github/my_script.sh) 
        echo "::set-env name=MY_SCRIPT::$myscript"
    

    或者:

    # 先切换到master目录的写法
    - name: Set sync script in env
      run: |
        cd master
        myscript=$(cat .github/my_script.sh) 
        echo "::set-env name=MY_SCRIPT::$myscript"
    

额外提示

::set-env是GitHub Actions的旧版命令,现在官方推荐使用多行环境变量的写法来避免转义问题,示例如下:

- name: Set sync script in env
  run: |
    echo "MY_SCRIPT<<EOF" >> $GITHUB_ENV
    cat master/.github/my_script.sh >> $GITHUB_ENV
    echo "EOF" >> $GITHUB_ENV

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:30:29