使用pnpm通过GitHub Actions部署GitHub Pages失败,请求定位错误
关于GitHub Actions部署无法生成有效URL的问题
我是GitHub Actions新手,之前在StackOverflow提问解决了部分问题,现在碰到新问题:部署脚本没法完成部署,还出现错误提示:
deploy Environment URL '' is not a valid http(s) URL, so it will not be shown as a link in the workflow graph.
我的Workflow配置代码如下:
name: pnpm Example Workflow on: push: jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18] steps: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 with: version: 7 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' - name: Install dependencies run: pnpm install - name: Build run: pnpm run build deploy: environment: name: github-pages # url: ${{steps.deployment.outputs.page_url}} runs-on: ubuntu-latest steps: - name: Setup Pages uses: actions/configure-pages@v3 - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: # Upload dist repository path: . - name: Deploy - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./public
问题定位与解决方案
核心错误原因
- YAML缩进不规范:GitHub Actions对YAML缩进要求严格,原配置中多个job、步骤的层级缩进混乱,导致配置解析错误。
- 部署方式冲突:同时混用了官方GitHub Pages部署组件(
actions/configure-pages、actions/upload-pages-artifact)和第三方的peaceiris/actions-gh-pages,两种流程无法兼容,导致环境URL无法正确获取。 - 部署路径错误:
actions/upload-pages-artifact的path设为.(整个仓库),而peaceiris/actions-gh-pages的publish_dir设为./public,路径不统一,且无用文件会干扰部署。
修正后的配置方案
方案一:使用官方GitHub Pages部署流程(推荐)
name: pnpm Example Workflow on: push: branches: [ main ] # 按需修改触发分支 jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18] steps: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 with: version: 7 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' - name: Install dependencies run: pnpm install - name: Build run: pnpm run build # 确保build产物生成在dist目录,若不是需修改下面的path deploy: needs: build # 等待build任务完成后再执行部署 runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} # 正确获取部署后的URL steps: - name: Setup Pages uses: actions/configure-pages@v3 - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: path: ./dist # 替换为你的实际build产物目录,比如public - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v2
方案二:使用第三方peaceiris/actions-gh-pages部署
name: pnpm Example Workflow on: push: branches: [ main ] # 按需修改触发分支 jobs: build-and-deploy: runs-on: ubuntu-latest strategy: matrix: node-version: [18] steps: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 with: version: 7 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' - name: Install dependencies run: pnpm install - name: Build run: pnpm run build - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./public # 替换为你的实际build产物目录,比如dist
注意事项
- 确认项目的
pnpm run build命令能正确生成静态产物到指定目录(比如dist或public)。 - 使用官方流程时,需在仓库「Settings」→「Pages」中选择「GitHub Actions」作为部署来源。
- YAML配置必须用2个空格缩进,不要用Tab键,避免解析错误。
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

