GitHub Actions找不到package.json及目录切换失败问题求助
GitHub Actions部署Auth0配置的错误分析与修复
问题根源
- Job之间环境完全隔离:GitHub Actions里每个Job都是在全新的独立runner实例中运行的,Job之间不会共享任何文件或环境状态。你在
buildJob里拉取了代码,但install和deployJob根本没执行代码拉取操作,导致这两个Job的环境里没有任何仓库文件。 - 对项目目录结构的误解:你的项目根目录就有
package.json,根本不存在./auth0_infrastructure这个目录,切换目录的操作完全是多余的错误操作。 - 不必要的Job拆分:你误以为单个Job里的步骤是并行执行的,但实际上单个Job内的步骤是串行依次执行的,拆分多个Job反而制造了环境隔离的问题,这个场景下完全没必要拆分。
具体错误解析
切换目录失败
在deployJob里,你尝试切换到./auth0_infrastructure,但这个Job既没拉取仓库代码,项目本身也没有这个目录,自然会提示找不到目录的错误。npm找不到package.json
移除切换目录步骤后,deployJob依然没有拉取仓库代码,runner环境里根本不存在package.json文件,所以npm会抛出ENOENT错误。
修正后的工作流配置
把所有步骤合并到单个Job中,确保代码拉取、环境准备、依赖安装、部署在同一个环境中完成:
name: Deploy authn configuration to prod on: push: branches: [main] workflow_dispatch: jobs: deploy-auth0: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v2 - name: 安装Node.js环境 uses: actions/setup-node@v1 with: node-version: "14.x" - name: 全局安装Auth0 Deploy CLI run: npm install -g auth0-deploy-cli - name: 部署到生产租户 env: AUTH0_CLIENT_SECRET: ${{ secrets.PROD_AUTH0_CLIENT_SECRET }} run: npm run import:staging
补充说明
- 单个Job内的步骤会按顺序执行,前一步成功后才会启动下一步,完全符合你的部署流程逻辑。
- 如果是复杂场景确实需要拆分Job,得用
actions/upload-artifact和actions/download-artifact在Job之间传递文件,但这个场景下完全不需要这么做。
内容的提问来源于stack exchange,提问作者equatorial_daydreamer
相关产品推荐
相关产品推荐

