mcpField
E
encore-deploy

encore-deploy

github.com/encoredev云与 DevOps3058 次安装2 周前更新
代码仓库

关于 encore-deploy

此技能通过 Git 推送将现有 Encore.ts 和 Encore.go 应用部署到 Encore Cloud。它帮助开发者在推送前核对部署分支、环境、测试和密钥,并排查部署是否已启动。

主要功能

  1. 01识别部署所用的 Git 远程仓库
  2. 02检查分支与环境的对应关系
  3. 03部署前运行测试并核对密钥
  4. 04通过空提交或 Dashboard 重新部署
  5. 05排查推送和部署问题

适用场景

  1. 01确认推送是否会部署到生产环境
  2. 02部署前准备测试和环境密钥
  3. 03添加缺失密钥后重新部署
  4. 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 端口,某些网络会阻止此连接。

指南

评论

支持 Markdown