关于 encore-deploy
此技能通过 Git 推送将现有 Encore.ts 和 Encore.go 应用部署到 Encore Cloud。它帮助开发者在推送前核对部署分支、环境、测试和密钥,并排查部署是否已启动。
主要功能
- 01识别部署所用的 Git 远程仓库
- 02检查分支与环境的对应关系
- 03部署前运行测试并核对密钥
- 04通过空提交或 Dashboard 重新部署
- 05排查推送和部署问题
适用场景
- 01确认推送是否会部署到生产环境
- 02部署前准备测试和环境密钥
- 03添加缺失密钥后重新部署
- 04诊断 Git 推送未触发部署的原因
MCP 相关
Encore Cloud MCP 服务可列出环境、部署、构建和日志,用于跟踪部署进度。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ encoredev/ skills --skill encore-deploy安装后在 Claude Code 中输入/encore-deploy确认已加载。
详细介绍
部署到 Encore Cloud
部署只需向应用所部署的 git 仓库提交并推送。Encore Cloud 会构建、测试、配置基础设施,并部署到所有从所推送分支进行部署的环境。Encore.ts 和 Encore.go 都适用相同的步骤。
说明
查找应用所部署的仓库
git remote -v
- **Encore 托管的 git(默认):**应用从
encore远程仓库部署。推送到那里。 - **关联的 GitHub 仓库:**如果应用已在 Cloud Dashboard 中关联到 GitHub(Settings > GitHub),则会改为从该仓库推送并部署。推送到该仓库,通常是
origin。 - **两者都不是:**应用尚未关联到 Encore Cloud。请参阅关联应用。
如果无法确定应用从哪个仓库部署,请询问用户。
检查推送会部署到哪些环境
每个环境都从自己的分支部署(环境的 Settings > Branch Push),也可以仅手动部署。新应用有一个环境,即 staging(类型为 development),它会部署应用的主分支。
一次推送可以部署到多个环境。如果生产环境从即将推送的分支部署,那么这次推送就会部署到生产环境,因此推送前请检查分支。
部署
git add -A
git commit -m "Describe the change"
git push encore # Encore-managed git
git push origin <branch> # linked GitHub repository
**推送到 encore:**推送成功后,每个正在部署的环境都会打印一行:
remote: <branch>: triggered deploy https://app.encore.dev/<app-id>/envs/<env>/deploys/<id>
如果没有出现这类行,则没有部署任何内容:
- **
Everything up-to-date:**没有新的提交。先提交,再次推送。 - **没有
triggered deploy行:**没有环境从所推送的分支部署。
**推送到 GitHub:**git 不会打印来自 Encore 的内容。请在 Cloud Dashboard 中检查 Deployments。
无论哪种情况,部署一启动,推送操作就会返回。请在 Cloud Dashboard 中跟踪进度,或通过 Encore Cloud MCP 服务(https://api.encore.dev/mcp,使用 encore-mcp 设置)查看,该服务会列出环境、部署、构建及其日志。每个环境的 API 均通过 https://<env>-<app-id>.encr.app 提供服务,除非它有自定义域名。encore logs --env=<env> 会持续输出其日志。
再次部署
每次向环境的分支推送新提交,都会重新部署该环境。若要在不更改代码的情况下重新部署,例如设置缺失的密钥后,可推送一个空提交:
git commit --allow-empty -m "Redeploy"
git push encore # Encore-managed git
git push origin <branch> # linked GitHub repository
也可以在 Cloud Dashboard 中重新部署:Deployments > New Deploy > Branch。
推送前
-
**测试:**部署会运行应用的测试,测试失败会阻止部署。请先运行测试。对于 Encore.ts,请使用
CI=true encore test:vitest脚本在没有终端的情况下会以监视模式运行,且永远不会退出。对于 Encore.go,请使用encore test ./...。 -
**密钥:**应用声明的每个密钥都必须在其部署到的每个环境中设置值,否则部署会因
secret key(s) not defined而失败。请按环境类型设置值,或为单个环境设置:printf '%s' "$VALUE" | encore secret set --type dev,local MySecret # development environments, such as staging printf '%s' "$VALUE" | encore secret set --type prod MySecret # production environments printf '%s' "$VALUE" | encore secret set --env <env> MySecret # one environment
关联应用
如果 encore.app 中的 "id" 为空,或者没有 encore 远程仓库且应用未从 GitHub 部署,则应用尚未关联到 Encore Cloud。请先关联应用(参见 encore-link-app),然后返回此处。对于已在 Encore Cloud 上、但不在当前机器上的应用,请使用 encore app clone <app-id> 克隆;如果应用关联到 GitHub,也可以使用 git clone 克隆其 GitHub 仓库。
推送到 encore 失败时
- **
could not get Encore auth token: not logged in:**请登录(参见encore-login)。 - **
'encore' does not appear to be a git repository:**远程仓库缺失。请参阅关联应用。 - 推送卡住:
git push encore使用 SSH 连接到git.encore.dev的 22 端口,某些网络会阻止此连接。
指南
- 推送前务必提交。没有新内容的推送不会部署任何内容。
- 了解你推送的分支会部署到哪些环境,尤其是生产环境。
- 推送到
encore后,请检查是否出现triggered deploy行,不要想当然地认为部署已启动。 - 不要运行
encore app create来部署现有应用。它会创建一个新的独立应用。 - 文档:https://encore.dev/docs/platform/deploy/deploying 和 https://encore.dev/docs/platform/deploy/troubleshooting