GitHub Actions部署时怎么指定分支?
我用 GitHub Actions 自动部署静态网站,但每次 push 到 main 分支都会触发部署,我想改成只在 deploy 分支推送时才部署。改了 workflow 文件里的 on: push: branches: [deploy] 还是没生效,是不是写法不对?
下面是我的完整配置:
name: Deploy to GitHub Pages
on:
push:
branches: [deploy]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
- run: npm install && npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
第一步,先确认你的workflow文件路径和名称是否正确。文件应该放在.github/workflows/目录下,比如可以叫deploy.yml。有时候放错位置会导致GitHub识别不到。
第二步,检查你的分支名称是不是真的叫deploy,有时候容易手误拼错。可以用这个命令在本地确认:
第三步,你的语法其实没问题,但为了保险可以试试更明确的写法:
有时候yaml的数组写法会因为缩进问题出bug,用这种更清晰。
第四步,如果还是不生效,可能是GitHub的缓存问题。你可以:
1. 手动触发一次workflow看看(在Actions页面点Run workflow)
2. 或者改个文件名强制刷新,比如从deploy.yml改成deploy-site.yml
第五步,最坏的情况是分支保护设置阻止了workflow运行。去仓库的Settings -> Branches,确认deploy分支没有设置保护规则阻止Actions运行。
最后给你个完整的参考配置,我加了点注释说明关键点:
如果还是不行,建议去看Actions的执行日志,通常会有明确提示。部署类的问题最烦的就是等它跑完才能看到问题,我懂这种痛苦...
branches: [deploy]语法上没问题。如果 push 到 main 还在跑,大概率是文件没提交上去,或者分支名大小写没对上。不过我看你用的 action 版本都还是 v3,这稍微有点旧了,既然要改,不如顺手升个级,顺便把代码写得更规范点。这是优化后的配置,我帮你把依赖都升到了 v4,写法也更符合现在的最佳实践:
顺便给你几个排查建议,如果这样改了还不行,检查一下这几件事:第一,确认这个 workflow 文件本身是提交在默认分支(通常是 main)上的,GitHub Actions 要求 workflow 文件必须在默认分支才能生效监听;第二,确认分支名拼写完全一致,GitHub 对大小写是敏感的;第三,我把
npm install换成了npm ci,这在 CI 环境下更干净、速度更快,算是顺手做的一点小重构。试试这个版本,应该能解决你的问题。