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

