GitHub Actions Secrets未生效,Vue项目部署失败怎么办?
在用GitHub Actions给Vue项目部署到Netlify时一直报403错误,怀疑是NPM_TOKEN密钥没读到。
我按照文档设置了仓库Secrets里的NPM_TOKEN,但在workflow里用$NPM_TOKEN时好像没生效。之前试过在步骤里加echo $NPM_TOKEN,结果输出为空。这是我的部署步骤:
- name: Deploy to Netlify
uses: netlify/actions/netlify@master
with:
api_token: ${{ secrets.NETLIFY_TOKEN }}
production部署命令: npm run build && npm publish
奇怪的是本地用相同token能正常发布,但GitHub Actions日志显示npm publish时提示认证失败。是不是Secrets的使用方式有问题?或者需要额外配置?
首先
secrets是好的,但你的 workflow 语法写错了。GitHub Actions 里环境变量和 secrets 要用 ${{ }} 包起来,而你直接写了 $NPM_TOKEN,这当然读不到。而且你在部署步骤用了 netlify/actions,但里面却执行 npm publish?这逻辑不对。Netlify 部署不需要发包到 npm,你是想部署前端页面吧?
如果你是要部署构建产物到 Netlify,根本不需要 NPM_TOKEN,你需要的是 NETLIFY_SITE_ID 和 NETLIFY_TOKEN。
正确的做法:
1. 确保你在 GitHub 仓库的 Secrets 里设置了:
-
NETLIFY_TOKEN:从 Netlify 用户设置里生成的 CLI token- (可选)
NETLIFY_SITE_ID:你的站点 ID,可以在 site settings 里找到2. 改 workflow 步骤:
3. 删掉 npm publish 那一行,那不是用来部署静态页面的,那是发包到 npmjs.com 用的。你现在这个操作是错的,所以报 403,因为没登录 npm。
总结:你混淆了 npm 发包和静态网站部署。Vue 项目打包后上传到 Netlify 就行,不需要 publish 到 npm。把上面那段 workflow 改了,再跑一次,基本就能好。