Serverless Framework Dashboard CI/CD 排障指南:重置 GitHub OAuth 授权与 GitHub App 安装
【免费下载链接】serverless⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.项目地址: https://gitcode.com/GitHub_Trending/se/serverless
本文讲解 Serverless Framework Dashboard 的 CI/CD 与 GitHub 集成出问题时如何排障。Dashboard CI/CD 依赖两层 GitHub 授权机制:面向用户的 OAuth 应用授权流,以及用于读取仓库内容的 Serverless GitHub App 安装。当仓库下拉框看不到仓库、集成状态异常时,按照本文的两种重置流程(撤销 OAuth 访问、重新配置或卸载 GitHub App),即可将集成的状态恢复干净,无需改动仓库内任何文件。
背景:Dashboard CI/CD 与 GitHub 集成的两层结构
在 CI/CD 总览 中,Serverless CI/CD 的定位是“从 GitHub 自动测试并部署服务”,其前提包括:
- 项目(含
serverless.yml)已提交到 GitHub(也支持 BitBucket); - 服务部署在 AWS 上;
- 使用 Node 或 Python 运行时。
配置流程分三步:先在 Provider 文档 的指引下把 AWS Access Role 与 Dashboard 中的 Provider 关联起来(Dashboard 每次部署会为该账号生成短期凭据,避免在 CI/CD 中长期保存密钥);然后在 Dashboard 应用的 CI/CD 设置中“connect to git”,按提示完成 GitHub 授权并安装 Serverless Framework App,再选择包含该服务的仓库(serverless.yml中的 service 名必须与所配置的服务一致);最后在 “branch deploys” 区域把分支映射到 stage,之后对该分支的每次提交都会自动用对应 stage 及其 Provider 部署。
其中第二步涉及两套相互独立的授权,这正是排障的着眼点:
- OAuth 应用授权流(用户级):Dashboard 通过 OAuth 应用流认证你的 GitHub 账号,获得“代表你访问 GitHub”的令牌。文档原文说明,撤销它“将撤销 Serverless Framework Dashboard 代表你访问 GitHub 所用的密钥”。它解决的是“Dashboard 知道你是谁、能看到你名下哪些仓库”。
- Serverless GitHub App 安装(仓库访问级):GitHub App 的安装决定了 Serverless 应用具体可以读取哪些仓库(你的账号、某个组织,或选定的若干仓库)。它解决的是“Serverless 有没有权限真正拉取目标仓库的代码”。
两者中任何一环状态异常(例如令牌过期后残留、App 被误删、仓库权限被收窄),都会表现为仓库选不到、部署不触发等问题。从源码结构看,本地 CLI 侧的部署流程也会把 VCS 快照(仓库 origin URL、分支、commit SHA、commit 信息与提交者邮箱等)连同部署记录一并上报到平台,见 deployments.js 中的setVcsData与saveDeployment——后者通过CoreSDK以authToken(accessKey)调用sdk.deployments.create落库。可以推断,Dashboard 侧正是依赖仓库与部署记录之间的这种关联来驱动 branch deploys 与部署详情展示,因此 GitHub 集成一旦失效,整条 CI/CD 链路都会受影响;而根据 FAQ,Serverless CI/CD 是 100% SaaS 化托管的,不需要自托管任何 agent,所有排障都发生在 GitHub 设置页与 Dashboard 设置页两个位置。
何时需要执行本文的重置操作:仓库下拉框中看不到目标仓库(此时下拉框下方会出现 “If you do not see your repository, install the Serverless application in Github” 的提示,并给出 “install the Serverless application” 链接)、授权流程中途失败后状态卡死、更换了 GitHub 账号/组织或调整后权限后 Dashboard 仍无法访问仓库。两种机制的修复入口分别在 GitHub 的 “Authorized GitHub Apps” 页和 “Installed GitHub Apps” 页(均位于 GitHub 网站的 Settings → Applications 之下),以及 Dashboard 应用的 CI/CD 设置页。
重置 OAuth 访问(Reset the OAuth access)
当怀疑用户级 OAuth 令牌状态异常时,按以下 4 步重置:
- 打开 GitHub 的Authorized GitHub Apps管理页,在 “Serverless” 条目旁点击“Revoke”。此操作会撤销 Serverless Framework Dashboard 代表你访问 GitHub 所用的密钥。
- 重新走一遍前面“进入部署设置”的 1–4 步(即登录 Dashboard → 打开目标应用的 settings → 在 “connect to git” 区块点击 “connect to Github” → 在 “repository settings” 区块选择仓库),系统会提示你 “connect github repository”,此时重新向 GitHub 完成一次认证。
- 认证后会弹出 GitHub App 的安装说明。如果你之前并没有卸载 Serverless 的 GitHub App,则无需再改这些设置,直接关闭窗口即可。
- 刷新 Dashboard 的部署(deployment)设置页,使新的授权状态生效。
注意第 3 步的判断要点:撤销 OAuth 并不影响 GitHub App 的安装状态,二者相互独立,因此 App 仍在装的情况下只需要重新授权 + 刷新页面。
配置或重置已安装的 GitHub App
当问题出在仓库访问权限层面(例如 App 被安装在错误的账号/组织下、Repository access 被收窄、或需要彻底重装),按以下步骤处理:
- 打开 GitHub 的Installed GitHub Apps管理页,找到 “Serverless” 应用并点击“Configure”。在这里你可以更新其访问设置,也可以直接卸载该应用。
- 检查“Repository access”设置,确认 Serverless 拥有对你要部署的仓库的访问权(例如是 “All repositories” 还是仅 “Select repositories”,所选仓库是否包含目标仓库)。
- 如有必要,可以直接Uninstall卸载该应用。
- 卸载应用后,重新走一遍进入部署设置的 1–4 步,并刷新该页面。
- 在仓库下拉框下方会出现提示 “If you do not see your repository, install the Serverless application in Github”,点击其中的“install the Serverless application”链接,重新安装 Serverless GitHub App,并在这一步确认 Repository access 覆盖目标仓库。
两条流程的关系可以这样理解:OAuth 重置处理“身份与令牌”,App 配置/卸载重装处理“仓库访问范围”。前者更轻量(通常不卸载 App),后者更彻底(可连 App 一起卸掉重来)。
验证与恢复后续配置
重置完成后,建议按顺序验证:
- 在 Dashboard 应用的 CI/CD 设置页刷新后,确认 “repository settings” 中已选中正确的仓库;如需指定 mono-repo 中的服务,还要确认 base directory 与 service 名匹配。
- 检查 “branch deploys” 区域的分支到 stage 的映射是否仍然完整——每行映射一个 source branch 到 target stage,提交即自动部署,且目标 stage 必须已配置有效的 Provider,详见 Branch Deployments。Dashboard 的改动是自动保存的,无需额外提交。
- 提交一次代码,到 Dashboard 的 “deployments” 视图确认出现新的测试与部署记录。
另外两点适用前提值得留意:免费层级仅支持公共仓库,私有仓库的 CI/CD 需要付费层级(见 FAQ);如果你不需要 Dashboard 托管的流水线,也可以改用 在自己的 CI/CD 中运行 的方式(使用长期关联到个人账号的 access token,注意该账号被删除时 token 会被一并吊销)。
小结与延伸阅读
- 排障只需记住两个入口:GitHub 的Authorized GitHub Apps(撤销 OAuth)与Installed GitHub Apps(配置/卸载 Serverless App),再配合 Dashboard 部署设置页的刷新与重装提示链接。
- 原文档全文见 troubleshooting.md,完整的 CI/CD 上手流程见 README.md,AWS 凭据接入见 providers.md,常见问题见 faq.md,部署记录与 VCS 数据上报的实现参考 deployments.js。
【免费下载链接】serverless⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.项目地址: https://gitcode.com/GitHub_Trending/se/serverless
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考