跳转到内容

Astro Studio

Astro Studio 网页门户 允许你通过网页界面或使用 CLI 命令 连接并管理你的远程托管的 Astro DB 数据库

在你的 Studio 仪表板,你可以访问账户管理、帮助文章和支持消息控制台等。

访问 Astro Studio 进行注册或登录。

创建新的 Studio 项目

段落标题 创建新的 Studio 项目

在 Astro Studio 中有两种方式创建项目:

  1. 使用 Astro Studio 网页界面从新的或现有的 GitHub 仓库创建。

    点击页头中的 “create project” 按钮并按照说明开始操作。Astro Studio 将连接到你的 GitHub 仓库,并为你的项目创建一个新的托管数据库。

  2. 使用 Astro Studio CLI 从任何本地 Astro 项目创建。你可以运行以下命令开始:

    Terminal window
    # 使用你的 GitHub 账户登录到 Astro Studio
    npx astro login
    # 根据提示链接到一个新的项目
    npx astro link
    # (可选) 将你的本地数据库配置推送到远程数据库
    npx astro db push

    一旦你已经成功登录并链接,你就可以运行所有的 Astro DB 命令来管理你的远程数据库。

    查看 Astro DB CLI 参考 获取所有可用命令。

使用 Studio 连接进行部署

段落标题 使用 Studio 连接进行部署

你可以使用与你的 Studio 数据库的实时连接来部署你的 Astro DB 项目。这可以在任何使用静态构建或 SSR 适配器 的部署平台上实现。

首先,配置你的构建命令以使用 --remote 标志与 Studio 连接。这个示例将该标志应用到你项目 package.json 中的 "build" 脚本。如果你的部署平台接受构建命令,确保这被设置成 npm run build

package.json
{
"scripts": {
"build": "astro build --remote"
}
}

创建一个 Studio 应用令牌

段落标题 创建一个 Studio 应用令牌

你需要创建一个应用令牌来从生产部署访问你的 Studio 数据库。你可以通过导航到 Settings 标签页并选择 Tokens 从你的 Studio 项目仪表板创建一个应用令牌。

复制生成的令牌并在你的部署平台中使用名称 ASTRO_STUDIO_APP_TOKEN 作为环境变量 / 环境秘钥。

你可以使用 Studio CI 流水线自动推送模式更改到你的 Studio 数据库。每当你合并到 main 时,这将会校验更改是否可以安全地进行,并且都会保持你的配置更新。

按照 GitHub 的文档 在你的仓库中配置一个新的秘钥,名称为 ASTRO_STUDIO_APP_TOKEN,并将你的 Studio 应用令牌作为秘钥的值。

一旦你的秘钥配置好,就在你的项目的 .github/workflows 目录中创建一个新的 GitHub Actions 工作流文件,将检出仓库和安装 Node.js 作为步骤,并使用 withastro/action-studio 动作来同步模式更改。

该动作会在所有 事件触发器 上运行 astro db verify,以确保架构更改可以安全地应用。如果你特别添加了 push 触发器,那么该动作会将这些更改推送到你的 Studio 数据库。

这个示例 GitHub Action _studio.ymlmain 分支更新时推送更改:

.github/workflows/_studio.yml
name: Astro Studio
env:
ASTRO_STUDIO_APP_TOKEN: ${{secrets.ASTRO_STUDIO_APP_TOKEN }}
on:
push:
branches:
- main
pull_request:
types: [opened, reopened, synchronize]
jobs:
DB:
permissions:
contents: read
actions: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: jaid/action-npm-install@v1.2.1
- uses: withastro/action-studio@main