---
url: 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/ci-cd'
title: 'CI/CD 集成 | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T00:44:50+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder 的内容存放在 Drupal 文本字段和配置实体中。本页介绍如何在 CI/CD 流水线和部署流程中纳入 DXPR Builder 内容。
  内容存储
  DXPR Builder 将数据存放在数据库和配置中：
tags:
  - 'Run it in production'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T09:09:48+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'CI/CD 集成'
      description: |-
        DXPR Builder 的内容存放在 Drupal 文本字段和配置实体中。本页介绍如何在 CI/CD 流水线和部署流程中纳入 DXPR Builder 内容。
        内容存储
        DXPR Builder 将数据存放在数据库和配置中：
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T00:44:50+0000'
      dateModified: '2026-10-24T09:09:48+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/ci-cd'
      articleSection: 投入生产运行
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/ci-cd'
      description: |-
        DXPR Builder 的内容存放在 Drupal 文本字段和配置实体中。本页介绍如何在 CI/CD 流水线和部署流程中纳入 DXPR Builder 内容。
        内容存储
        DXPR Builder 将数据存放在数据库和配置中：
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: 首页
            item: 'https://dxpr.com/zh-hans'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: zh-hans
---
[帮助中心](/zh-hans/node/75)/[文档](/zh-hans/hc/documentation) /[学习 DXPR Builder](/zh-hans/hc/documentation/learn-dxpr-builder) /[管理网站](/zh-hans/hc/documentation/learn-dxpr-builder/manage) /[投入生产运行](/zh-hans/hc/documentation/learn-dxpr-builder/manage/production) # CI/CD 集成.

 学习 DXPR Builder管理网站投入生产运行

   ## 本指南内容

 相关指南

- [内容暂存](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/content-staging)

DXPR Builder 的内容存放在 Drupal 文本字段和配置实体中。本页介绍如何在 CI/CD 流水线和部署流程中纳入 DXPR Builder 内容。

## 内容存储

DXPR Builder 将数据存放在数据库和配置中：

| 数据类型 | 存储位置 | 部署方法 |
|---|---|---|
| 页面内容 | 文本字段值（数据库） | 内容同步或迁移 |
| 页面模板 | 配置实体 | 配置导出/导入 |
| 用户模板 | 配置实体 | 配置导出/导入 |
| 设置 | 配置；产品密钥存放在 **Configuration storage** | 将密钥放入 Key 实体后再配置导出/导入；见下文 |
| 用户档案 | 配置实体 | 配置导出/导入 |
| 产品密钥 | 设置，或保存密钥（或指向密钥）的 Key 实体 | 按环境处理；见下文 |

## 配置管理

DXPR Builder 的设置和模板属于 Drupal 配置。请用标准的 Drupal 配置管理来部署它们。

### 导出

```bash
drush config:export

```

这会导出以下 DXPR Builder 配置文件：

- `dxpr_builder.settings.yml`
- `dxpr_builder.dxpr_builder_profile.*.yml`
- `dxpr_builder.page_template.*.yml`
- `dxpr_builder.user_template.*.yml`
- `key.key.dxpr_builder_jwt.yml`，或为产品密钥选择的 Key 实体

当产品密钥还在文件中时，不要提交 `dxpr_builder.settings.yml`；请参阅下文 [产品密钥](#product-keys)。

### 导入

```bash
drush config:import

```

### CI 流水线示例

`drush deploy` 按正确顺序运行数据库更新、导入配置并重建缓存。DXPR Builder 的发行版会在数据库更新中转换内容，因此每次部署都要运行它们。

```yaml
deploy:
  script:
    - drush deploy -y

```

## 内容部署

页面内容（文本字段中的 HTML）是数据库内容，不是配置。在环境之间部署内容的方法：

### Default Content 模块

将内容导出为 YAML 文件，再导入目标环境。

### Content Synchronization

使用 Content Synchronization 模块（`content_sync`）导出和导入内容实体。

### 数据库同步

将数据库从一个环境复制到另一个环境：

```bash
drush sql:sync @source @target

```

## 各环境注意事项

### 文件路径

DXPR Builder 的内容按文件路径引用上传的图片。请在环境之间同步文件目录。

### 产品密钥

每个环境都需要有效的产品密钥。在默认的 **Configuration storage** 下，`dxpr_builder.settings.yml` 以明文保存该密钥，即 `json_web_token`。在文件进入代码库之前：

1. 在 **Configuration** &gt; **System** &gt; **Keys**(`/admin/config/system/keys`) 创建一个 Key，其提供方读取环境变量或文件。
2. 在 **DXPR Studio** &gt; **DXPR Builder** &gt; **General Settings**(`/admin/dxpr_studio/dxpr_builder/settings`) 将 **Storage method** 设为 **Key module**，在 **Key** 下选择该键并点击 **Save settings**。这会清除 `json_web_token`。
3. 重新导出配置，检查 `dxpr_builder.settings.yml` 不再包含密钥。

使用 **Configuration** 提供方的 Key 将值存放在自己导出的文件中，因此也不能提交。

## 接下来做什么？

[在环境之间暂存内容](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/content-staging)，继续探索 DXPR Builder。