Skip to main content
On this page

构建

在 Deno Deploy 中,您应用程序代码的每个版本都被表示为一个修订(或构建)。当从 GitHub 部署时,修订通常与您仓库中的 git 提交一一对应。

构建触发 Jump to heading

构建可以通过三种方式触发:

  • 通过 UI 手动触发:使用构建页面上的“部署默认分支”按钮,部署默认 git 分支(通常是 main)。下拉菜单允许您选择不同的分支。

  • 通过 CLI 手动触发:使用 deno deploy 命令。

  • 通过 GitHub 自动触发:当向与您的应用关联的 GitHub 仓库推送新的提交时。

构建阶段 Jump to heading

一个修订在变为可用状态前会经历以下阶段:

  1. 排队:修订等待分配给构建器。
  2. 准备:构建器下载源代码并恢复可用的构建缓存。
  3. 安装:执行安装命令(如果指定),通常用来下载依赖。
  4. 构建:执行构建命令(如果指定),生成构建产物并上传到运行时基础设施。
  5. 部署:修订准备部署到每个时间线。对于每个时间线,执行以下操作:
    1. 创建数据库:如果应用有附属数据库,确保该时间线存在数据库(必要时创建)。
    2. 预部署命令:执行应用配置的任何预部署命令,通常用于数据库迁移等任务。
    3. 预热:仅在“预览”时间线中,启动应用以确保其正常启动。
    4. 路由:将新修订推广到与该时间线关联的 URL。

如果任何步骤失败,构建将进入“失败”状态并且不会接收流量。

构建日志会在构建过程中实时推送到仪表盘,构建完成后仍可在构建页面查看。

构建缓存通过重用在构建间未更改的文件来加快构建速度。对于框架预设和 DENO_DIR 依赖缓存,此过程是自动进行的。

您可以使用构建页面右上角的“取消”按钮取消正在运行的构建。构建会在运行 5 分钟后自动取消。

构建配置 Jump to heading

应用配置定义了如何将源代码转换为可部署的构建产物。

您可以在两个位置设置应用配置:

  • 在源代码中:在应用程序目录中使用 deno.jsondeno.jsonc 文件。
  • 在 Deno Deploy 仪表盘:使用应用配置设置。

如果您同时指定了这两种方式,源代码中的设置优先于仪表盘中的设置。如果最近一次成功构建使用了源代码中的配置,则无法在仪表盘中编辑任何应用配置值。

应用目录必须通过仪表盘配置。此设置不能通过源代码配置,因为它决定了在哪里查找源代码本身。

在仪表盘中编辑应用配置 Jump to heading

您可以在三个地方修改应用配置:

  • 创建应用时点击“编辑构建配置”
  • 在应用设置中点击构建配置部分的“编辑”
  • 在失败构建页面的重试抽屉中

在创建应用时,如果您使用已识别的框架或常见构建配置,构建配置可能会自动从仓库中检测。

配置选项 Jump to heading

  • 应用目录:仓库中用作应用根目录的文件夹。适用于 Monorepo。默认是仓库根目录。

  • 框架预设:针对支持的框架(如 Next.js 或 Fresh)做了优化的配置。了解更多框架集成

  • 安装命令:安装依赖的 shell 命令,如 npm installdeno install

  • 构建命令:构建项目的 shell 命令,通常是 package.jsondeno.json 中的任务,如 deno task buildnpm run build

  • 预部署命令:构建完成但部署前运行的 shell 命令,通常用于数据库迁移等任务。

  • 运行时配置:决定应用如何提供流量:

    • 动态:用于通过服务器响应请求的应用(API 服务器、服务器渲染网站等)
      • 入口文件:要执行的 JavaScript 或 TypeScript 文件
      • 参数(可选):传递给应用的命令行参数
      • 运行时工作目录(可选):应用运行时的工作目录
      • 运行时内存限制(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
    • 静态:用于提供预渲染静态内容的静态网站
      • 目录:包含静态资源的文件夹(如 dist.output
      • 单页应用模式(可选):对不匹配静态文件的路径返回 index.html,而不是 404 错误
    • 自动:使用框架预设时,运行时配置会自动设置。
      • 运行时内存限制(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
  • 构建超时:构建过程允许的最长时间。默认 5 分钟,Pro 计划下可增加至 15 分钟。

  • 构建内存:分配给构建过程的内存大小。默认 3 GB,Pro 计划下可增加至 4 GB。

从源代码编辑应用配置 Jump to heading

要从源代码配置您的应用,在应用根目录中添加一个带有 deploy 键的 deno.jsondeno.jsonc 文件。如果在此键下指定了以下任何应用配置选项,整个配置将从文件中获取,而不是从仪表盘(仪表盘中指定的配置将被忽略)。

deno.json 选项 Jump to heading

  • deploy.framework(必填,除非设置了 deploy.runtime):要使用的框架预设,例如 nextjsfresh。设置此选项会自动配置框架的默认值。可用预设在框架集成文档中列出。
  • deploy.install(可选):安装依赖的 shell 命令。
  • deploy.build(可选):构建项目的 shell 命令。
  • deploy.predeploy(可选):构建完成但部署前运行的 shell 命令,通常用于数据库迁移等任务。
  • deploy.runtime(必填,除非设置了 deploy.framework):应用如何提供流量的配置。应用可以是静态的或动态的,具体如下:
    • 对于动态应用:
      • deploy.runtime.type:必须设置为 "dynamic",或省略(默认动态)。
      • deploy.runtime.entrypoint:要执行的 JavaScript 或 TypeScript 文件。
      • deploy.runtime.args(可选):传递给应用的命令行参数。
      • deploy.runtime.cwd(可选):应用运行时的工作目录。
      • deploy.runtime.memory_limit(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
    • 对于静态应用:
      • deploy.runtime.type:必须设置为 "static"
      • deploy.runtime.cwd:包含静态资源的文件夹(如 dist.output)。
      • deploy.runtime.spa(可选):如果为 true,对未匹配静态文件的路径返回 index.html,而不是返回 404。
    • 对于使用框架预设的应用:
      • deploy.runtime.memory_limit(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。

示例 Jump to heading

deno.json 中的动态应用配置示例:

{
  "deploy": {
    "install": "npm install",
    "build": "npm run build",
    "predeploy": "deno run --allow-net --allow-env migrate.ts",
    "runtime": {
      "type": "dynamic",
      "entrypoint": "./app/server.js",
      "args": ["--port", "8080"],
      "cwd": "./app"
    }
  }
}

deno.jsonc 中的静态应用配置示例:

{
  "deploy": {
    "install": "npm install",
    "build": "npm run build",
    "runtime": {
      "type": "static",
      "cwd": "./public",
      "spa": true
    }
  }
}

使用 Next.js 框架预设的配置示例(deno.json):

{
  "deploy": {
    "framework": "nextjs",
    "install": "npm install",
    "build": "npm run build"
  }
}

构建环境 Jump to heading

构建环境运行于 Linux,支持 x64 或 ARM64 架构。可用工具包括:

  • deno(版本与运行时相同)
  • node
  • npm
  • npx
  • yarn(v1)
  • pnpm
  • git
  • tar
  • gzip

Info

构建器内部所有 JavaScript 代码均通过 Deno 执行。

node 命令实际上是一个 shim,负责将 Node.js 的调用转换为 deno run。类似地,npmnpxyarnpnpm 也都是通过 Deno 而非 Node.js 运行。

为“构建”上下文配置的环境变量在构建过程中可用,但来自“生产”或“开发”上下文的变量不可用。了解更多关于环境变量

构建期间将额外始终提供以下环境变量:

  • CI: true
  • DENO_DEPLOY: true - 表示代码正在 Deno Deploy 中运行。
  • DENO_DEPLOY_ORGANIZATION_ID:拥有该应用的组织的 ID(UUID)。
  • DENO_DEPLOY_ORGANIZATION_SLUG:拥有该应用的组织的 slug(用于 URL 的人类可读标识符,在创建组织时设置)。
  • DENO_DEPLOY_APPLICATION_ID:应用的 ID(UUID)。
  • DENO_DEPLOY_APPLICATION_SLUG:应用的 slug(用于 URL 的人类可读标识符,在创建应用时设置,或之后可在应用设置中更改)。
  • DENO_DEPLOY_BUILD_ID:当前运行的构建 ID。

构建器在构建过程中可用的资源:

  • 2 个 vCPU
  • 3 GB 内存(Pro 计划下可增加至 4 GB)
  • 8 GB 存储空间

你找到了你需要的东西吗?

编辑此页面
隐私政策