使用 GitHub 自动部署
Overview
您可以将Atlas App Services App 配置为在您将应用配置文件推送到 时自动部署Github 存储库。您可以将Github存储库库克隆到计算机,然后使用标准 Git 命令获取最新版本并部署新更改。
先决条件
一个 GitHub 帐户和存储库。存储库应该为空或包含导出的现有应用配置目录。有关如何创建空存储库的信息,请参阅 GitHub 的创建存储库指南。
已安装的 Git CLI 副本。 如果您没有安装
git
,请参阅 安装 Git 的官方指南 。MongoDB Atlas编程 API 密钥,用于验证和授权访问应用程序的底层 Git 存储库。 如果您尚未为 Atlas 组织生成编程 API 密钥,请立即执行此操作。
启用 GitHub 自动部署
您可以使用 App Services 用户界面、App Services CLI 或 App Services Admin API 在 GitHub 中启用自动部署。
安装 Atlas App Services GitHub 应用
为了基于 GitHub 存储库自动部署,Atlas App Services 要求您安装至少具有对存储库的读取访问权限的 GitHub 应用。
要安装应用,请单击 App Services 用户界面左侧导航菜单中的 Deployment。选择 Configuration 标签页,然后单击 Install App Services on GitHub。随即会打开一个新的浏览器窗口,显示 GitHub 应用程序安装流程。
注意
GitHub 身份验证
GitHub 可能会要求您提供 GitHub 帐户凭据,然后才能安装该应用。
选择要安装应用的 GitHub 账户或组织:
指定一个或多个要授予 App Services 读取权限的存储库。您既可以选择特定的存储库,也可以授权访问 GitHub 上的所有存储库。选择要使用的存储库,然后单击 Install。
安装应用程序后,返回到Configuration选项卡并单击Authorize按钮以完成将 App Services 连接到 GitHub 的操作。这将引导您进入 github 权限屏幕。单击Authorize MongoDB Atlas App Services。
初始化存储库
克隆您指定的 Git 存储库的本地副本:
git clone https://github.com/<organization>/<repo>.git
配置的分支和目录必须包含定义应用程序的配置文件。您可以手动创建配置,或导出现有应用的应用程序目录。
将应用程序目录添加到存储库,然后提交更改:
git add -A git commit -m "Adds App Services Application Directory"
将最新版本的应用程序提交到存储库后,将其推送到 GitHub 存储库:
git push origin <branch name>
提交并推送更改
更新应用程序配置后,可以通过将更新推送到您指定的 GitHub 存储库,将更新部署为新版本的应用。如果已启用自动 GitHub 部署,则 App Services 会立即部署已配置的分支和目录的最新提交。
当您准备好部署时,提交您想要包含的所有文件,然后将它们推送到 GitHub:
git add -A git commit -m "<commit message>" git push origin <branch name>
成功将更改推送到 GitHub 后,App Services 就会立即部署与最新提交的状态匹配的应用程序的新版本。客户端应用程序将自动使用最新版本,因此如有必要,请确保同时更新客户端代码以使用新版本。
1.1.0版本新增。
您可以使用CLI来配置、启用或禁用自动部署。
运行部署配置命令
App Services CLI 可以引导您完成配置自动部署的过程。 这是一个交互式命令。
appservices deploy configure
该命令还支持您可以选择包含的其他标志。 有关这些标志的信息,请参阅appservices部署配置。
完成此命令后, App Services CLI会立即启用自动部署。 您无需额外运行enable
命令。
提示
通过CLI配置自动部署依赖于Github beta功能
使用 配置自动部署的能力依赖于当前处于App Services CLI Github的beta 功能。如果Github对此功能进行重大更改,您可能无法使用App Services CLI配置自动部署。 在这种情况下,请使用App Services用户界面或管理API配置自动部署。
Github beta功能仅影响配置自动部署。 如果您以前为应用程序配置了自动部署,则无论此 功能的状态如何,您都可以使用App Services CLI betaGithub启用或禁用它。
禁用、启用或查看配置详细信息(可选)
配置自动部署后,可以使用App Services CLI查看配置详细信息。
appservices deploy describe
还可以使用App Services CLI禁用和启用自动部署。 有关这些命令及其选项的更多信息,请参阅appservices部署。
对 MongoDB Atlas 用户进行身份验证
使用您的 MongoDB Atlas API 密钥对调用管理员用户身份验证端点:
curl -X POST \ https://services.cloud.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "username": "<Public API Key>", "apiKey": "<Private API Key>" }'
如果身份验证成功,响应正文将包含一个具有access_token
值的JSON对象:
{ "access_token": "<access_token>", "refresh_token": "<refresh_token>", "user_id": "<user_id>", "device_id": "<device_id>" }
access_token
授予对App Services Admin API的访问权限。 您必须将其作为持有者令牌包含在所有 Admin API请求的Authorization
标头中。
获取现有部署配置(可选)
您可以通过向“获取部署配置”端点发出GET
请求来获取应用的现有部署配置。
curl -X GET \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/deploy/config \ -H 'Authorization: Bearer <access_token>'
更新部署配置
您可以通过向配置部署端点发出PATCH
请求来更新应用的现有部署配置。
curl -X PATCH \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/deploy/config \ -H 'Authorization: Bearer <access_token>' \ -d '{ "ui_drafts_disabled": true, "automatic_deployment": { "enabled": true, "provider": "github", "installation_ids": [ "string" ] }, "last_modified": 0 }'
从用户界面进行更改
自动 GitHub 部署不会阻止您从 App Services UI 对应用进行更改。您可以通过用户界面对应用进行更改,App Services 会自动将更改提交回链接的 GitHub 存储库。
提示
如果链接的 GitHub 存储库包含未反映在 App Services 用户界面更改中的新提交,则 App Services 无法自动将这些更改提交到存储库。但是,您可以使用“Export”按钮将更新的配置文件下载到本地计算机,然后手动将其推送到 Github 存储库。
将更改提交到链接的 GitHub 存储库后,您可以在应用程序的部署历史记录中查看 Commit: <commit-hash> 链接。
您可以单击该链接以查看 GitHub 中的提交。mongodb-realm
机器人将显示为提交作者。
从 CLI 中进行更改
以前,我们建议您避免在配置自动部署后使用 App Services CLI 对应用进行更改。从 App Services CLI 1.1.0 和更高版本开始,您可以安全地使用 App Services CLI 对应用进行更改。
App Services CLI 1.1.0 和更高版本
在 App Services CLI 1.1.0 和更高版本中,来自 App Services CLI 的推送自动在 Github 中生成相应的提交。这会将您的代码更改与版本控制的 GitHub 事实来源保持同步。
App Services CLI 1.0.3 和更早版本
在 App Services CLI 1.0.3 和更早版本中,避免在配置自动部署后使用 App Services CLI 对应用进行更改,因为:
如果在启用 GitHub 部署时使用 CLI 推送更改,则 App Services 会部署更改,但不会将其提交回链接存储库。
存储库中的配置文件不再反映当前应用的状态。
要获取您推送的更改,贡献者必须直接从您的应用手动提取最新的配置文件。GitHub 存储库不再是数据源。
如果贡献者将新提交添加到过时的存储库,他们将覆盖任何已部署但未提交的更改。
总结
您可以通过修改 GitHub 上托管的存储库来部署应用。
启用自动 GitHub 部署后,App Services 会立即部署最新提交。要进行部署,请在本地提交更改,然后将其推送到 GitHub 上的存储库。
启用自动 Github 部署后通过 App Services 用户界面进行更改时,这些更改会自动提交回链接的存储库。
如果您希望在启用自动 GitHub 部署后使用 App Services CLI 更新配置文件,请使用 App Services CLI 1.1.0 或更高版本。