GitHub Actions下$GITHUB_WORKSPACE与$PWD显示为空问题排查
空目录现象的核心原因
出现这个结果的本质是工作流配置遗漏了仓库代码拉取步骤。
GitHub Actions的ubuntu系列runner启动后,会预创建一个临时空目录作为工作区,这个路径会被赋值给环境变量$GITHUB_WORKSPACE,同时也是后续所有run步骤的默认工作目录(即$PWD的指向)。runner启动时不会自动把你仓库里的代码同步到这个目录,必须通过显式的步骤配置才能完成代码拉取。
你现在的配置里,执行ls命令的时候,这个临时目录刚被创建,除了文件系统自带的.、..两个基础目录项,没有其他任何文件,所以两次目录查看操作返回的结果完全一致,没有实际的业务文件。
修复方法
在执行目录查看命令的步骤之前,添加官方提供的代码检出动作即可,修改后的完整工作流配置如下:
name: Debug on: [push, workflow_dispatch] jobs: debug: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v4 - name: 打印当前工作目录内容 run: | ls -la $PWD ls -la $GITHUB_WORKSPACE
重新触发工作流后,就能正常看到仓库根目录下的所有文件列表。
相关注意事项
- 默认执行环境里
$PWD和$GITHUB_WORKSPACE是完全等价的,两次跑相同的ls命令返回一致结果是正常现象,不是配置出错 - runner的临时目录不会永久保存文件,当前job执行结束后整个实例都会被回收,所有中途创建的文件都会被清空
- 如果需要指定某个子目录作为工作目录执行命令,可以在
run步骤里加working-directory参数配置,不需要手动写cd切换
内容的提问来源于stack exchange,提问作者Lukasz Dynowski
相关产品推荐
相关产品推荐

