# @deployfoundation/foundation-deploy 中文文档

规范地址：https://npmcn.com/package/%40deployfoundation/foundation-deploy/

版本：0\.2\.55
npm 元数据更新时间：2026-10-27T10:08:37.297Z
中文译文更新时间：2026-11-12T00:22:34.050Z
软件包许可：UNLICENSED

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40deployfoundation/foundation-deploy
原文对照：https://npmcn.com/package/%40deployfoundation/foundation-deploy/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.3 MB，82 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：8 个
- 首次发布：2026-09-24T19:21:00.199Z
- 最新版本发布：2026-10-27T10:08:36.920Z
- 近 30 天下载量：3661（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：60（近 12 个月 60 个）

## 中文简介

从一个已发布、已签名的版本中部署一个基金会实例:CDK应用程序和部署工具.

## 安装

```sh
npm install @deployfoundation/foundation-deploy
```

也可以使用：`pnpm add @deployfoundation/foundation-deploy`、`yarn add @deployfoundation/foundation-deploy`、`bun add @deployfoundation/foundation-deploy`

## README

# `@deployfoundation/foundation-deploy`

应用一个基金会实例的 CDK 应用程序,以及 `foundation-deploy`,则 一个实例的管道运行.

基金会船只 **没有实例文件, 没有公司配置**. 一切情况 确定部署——账户、区域、Slack工作空间、GitHub org, 命名前缀, 提供其中的集成—— 生活在 YAML 中 部署的自己的仓库。 此软件包的两半都走这条路 找到那个档案,然后找出剩下的.

## CDK 应用程序

```sh
cd packages/infra
bunx cdk synth --all -c instanceFile=../../../my-instance/instance.yaml
bunx cdk deploy --all -c instanceFile=/abs/path/instance.yaml -c agentImageTag=abc1234
```

上下文键 :

| 密钥 | 含义 |
| --- | --- |
| `instanceFile` | **要求.** 实例 YAML 路径, 绝对或相对于工作目录 . |
| `admins` | Slack管理员的CSV ID。 默认为 `admins` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}就这个案子来说 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}是的. |
| `alarmEmail` | DLQ 提醒订阅器 。 默认为无. |
| `agentImageTag` | 在从本地架构部署 AgentCore 运行时间时需要; 发布时将图像命名 . |
| `release` | 部署已公布的新闻稿: `vX.Y.Z`。清单从 `$FOUNDATION_RELEASE_DIR` 或每版缓存目录 `foundation-deploy` 写作. |
| `releaseManifest` | 核实的释放清单的路径,这就是 `foundation-deploy --release` 通过. |
| `releaseBucket` | 基金会放出货单的钥匙 在释放模式下(或 `FOUNDATION_RELEASE_BUCKET`) (中文(简体) ). |
| `deployRuntime=false` | 跑步相:除了跑步时间之外,每个堆放相. |
| `pipelineInstanceFile` | 当实例文件位于代码Pipeline源的Repo内时, 当它与这里给出的路径不同时 . |
| `vpcId`, (中文(简体) ), `createVpcEndpoints`, (中文(简体) ), `skipEndpoints`, (中文(简体) ), `agentSubnetIds` | 网络出逃舱口,不变. |

`instance.config` 解决 **相对于实例文件自己的目录**, (中文(简体) ), 因此是一个实例存储器,其布局为 `.foundation/{instance.yaml,config.yaml}` 写入 `config: config.yaml` 没有别的了.

`FOUNDATION_SKIP_BUNDLE=1` 换掉每个Lambda捆绑 换一个内含的根茎 这是什么 测试使用,以及没有Docker或Bun的主机的合成检查应使用什么.

## 部署工具

```sh
bun run packages/infra/bin/foundation-deploy.ts <command> --instance <path>
```

| 命令 | 它会做什么 |
| --- | --- |
| `deploy` | 构建和推动代理图像, `cdk deploy --all`,刷新运行时的秘密(和 `cdk deploy` 当它改变了,所以没有 集装箱靴子在旧的,同步配置. |
| `post-deploy` | 烟雾防御 探测恒山 宣传 `live`烟雾 `live`。 。 。 . |
| `config:sync` | 上传运行时配置(针对已部署的 Foundation 版本,必须是此工具的)和 Foundation 的产品技能到 S3 . |
| `setup` | 第一部署管弦乐,一作能. |
| `github-app-create` | 从已发送的列表模板创建实例的 GitHub App . |
| `slack-manifest` | 打印该实例的 Slack 应用程序 显示为 JSON( Slack CLI ) `get-manifest` 钩子合同). |
| `stage-customization` | 验证和进行租户拥有的运行时间配置. |
| `crm-key` | 写公司CRM的 `crm/1` 键入 `--stdin`输入 `<secretPrefix>/crm/http` (单位:千美元)`crm.provider` 类型 `http`) (中文(简体) ). |
| `crm-check` | 运行 `crm/1` 兼容套件:针对该案件的客户关系管理系统的读取案件及其存储的密钥,或 `--base-url --tenant --key-stdin` 并且没有实例,任何服务器,写出大小写,每个大小写都严格地考虑到服务器的取用端点(`--harness-url`)和部署投入(docs/crm-professor-contract.md#crm-check). CRM 也可以导入套件 : `@deployfoundation/foundation-deploy/crm-conformance`。 。 。 . |
| `crm-replay` | 重放代理的CMM(JSONL)在回滚至DynamoDB提供商后写入实例自己的表格. |

`--instance <path>` 每个命令(或 `FOUNDATION_INSTANCE_FILE` 在管道中),但 `crm-check --base-url`,检查服务器而不是部署。 没有实例 _名称_,没有 `instances/` 目录和无 默认: 猜测其目标的部署将是向错误部署 账户.

### 部署释放

```sh
# an instance repo's whole build step
npx @deployfoundation/foundation-deploy@$(cat foundation.version) deploy \
  --instance .foundation/instance.yaml
```

从 npm 安装的工具副本没有建立基础工作空间 从, 因此它部署 释放匹配 **其自己的版本**: 它获取 `releases/vX.Y.Z/manifest.json` 从基金会释放桶,核实 kMS的签名和每个文物的sha256, 并且只有部署。 在一个 与以往一样,同一命令在当地建立. `--release <vX.Y.Z>`, (中文(简体) ), `--manifest <path|s3://…>` 财务报告和审定财务报表 `--release-bucket <name>` 推翻选择.

在发行账户存在之前, 设置 `FOUNDATION_RELEASE_KMS_KEY_ARN` 页:1 已发布签名密钥 ARN: 工具船没有默认, 因为信任 错误的密钥 比检查什么更糟糕.

### 执照检查

`deploy` 核实案件 `license.key` 反对 `https://license.foundry41.com/v1/verify` (与 `FOUNDATION_LICENSE_ENDPOINT`在部署之前,发送钥匙 example id and the version——别无其他。 无密钥的例子是 带着警告跳过 确定拒绝停止部署;无法到达 30天内 终点不在案件缓存的核查上 拥有 `<prefix>/license/last-verified` 暗号.

该工具从未导入代理包 。 它运行在管道,而不是在 代理集装箱.

## 艺术品

`src/artifacts.ts` 是决定部署的字节所在的单一地点 它有两种模式:

-   **本地建筑** (默认). 每个Lambda捆绑都是用这个做的 与被钉住的邦斯合成,和 `deploy` 建设和推动 代理图像到案件本身的ECR第一。 捐助方部署 这边是工作树.
-   **释放**。 。 。 . `-c release=vX.Y.Z` (或 `-c releaseManifest=<path>`+) 加上 (中文(简体) ) `-c releaseBucket=<name>`每一个Lambda的代码是 `Code.fromBucket(...)` 打开 而代理图像是基金会自己的 以文摘为主的寄存器。 没有建,所以管道不需要 Docker,没有Bun和基金会的退房.

`src/release/manifest.ts` 是其表象本身——计谋、建造者、 符号字节覆盖,和 `verifyManifest`,检查KMS 签名 **在此之前** 任何文物都会被读取 然后每个文物的sha256. `src/release/kms.ts` 是AWS的半边。 一个明显到达一个合成器 已经核实 `foundation-deploy`。 。 。 .

## 发行账户(Foundry 41的自有)

`src/stacks/release-account-stack.ts` 这里唯一的堆栈不是 证据 它持有什么发布 _从_释放桶, 页:1 `foundation/agent` 图像存储器、 KMS 签名密钥和 OIDC 角色 `.github/workflows/release.yml` 假设在标签推。 顾客来了 开桶的账号列表 数据库和密钥.

```sh
cd packages/infra
bunx cdk --app 'bun run bin/release-account.ts' diff FoundationRelease \
  -c customerAccountIds=111122223333,444455556666
bunx cdk --app 'bun run bin/release-account.ts' deploy FoundationRelease \
  -c customerAccountIds=111122223333,444455556666
```

一次,用手, 在释放账户。 其产出为四 发布工作流程需要的存储变量(`FOUNDATION_RELEASE_BUCKET`, (中文(简体) ), `FOUNDATION_RELEASE_KMS_KEY_ARN`, (中文(简体) ), `FOUNDATION_RELEASE_ROLE_ARN`图像 ),加上签名的关键ARN客户进行验证. 添加一个 客人是调用时间更长的 `customerAccountIds`。 。 。 .

## 出版

```sh
bun run --cwd packages/infra build   # dist/, Node target, ESM
cd packages/infra && npm pack --dry-run
```

构建将三个切入点——CLI、CDK应用程序和 发行账户应用软件 `dist/`,将工作空间包(即 因此 npm 安装 一个 `aws-cdk-lib` 两半都能看到. `aws-cdk` 本身是一个 依赖性,而不是依赖性:工具外壳到 CDK CLI 和 通过这个包而不是通过路径来解决.

柏油球携带 `dist/`, (中文(简体) ), `src/` (表列模板从 在运行时, 代理图像的 Docker 文件, 引用构建图和 `cdk.json`它不携带 `bin/`: 这些类型脚本切入点需要 Bun 和工作空间,传送一个不能运行的应用程序条目是如何部署 选错人了. `node dist/bin/foundation-deploy.js --help` 从一个 提取出只安装了运行时间依赖的柏油球——无 Bun,无 基础检查——这正是一个实例的管道.

## 测试

```sh
bun test packages/infra
```

他们跑下去 `bun test` 和其余的回波——没有笑话,没有ts-node. 这个 快取测试弹壳到 `cdk synth` 对于两个固定装置,所以它需要 工作空间已安装,但没有 AWS 证书和 Docker .

固定是合成的(`test/fixtures/`: `acme` 打开每一个整合, `beta` 是CodePipeline部署的一个最小实例。 没有真正的公司出现 在这个包裹的任何地方.

## 常见问题

### @deployfoundation/foundation-deploy 是什么？

从一个已发布、已签名的版本中部署一个基金会实例:CDK应用程序和部署工具\.

### 如何安装 @deployfoundation/foundation-deploy？

在项目目录运行 npm install @deployfoundation/foundation-deploy，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 foundation-deploy，可以用 npx foundation-deploy 直接运行。

### @deployfoundation/foundation-deploy 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @deployfoundation/foundation-deploy 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @deployfoundation/foundation-deploy 可以商用吗？

@deployfoundation/foundation-deploy 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @deployfoundation/foundation-deploy 的下载量有多少？

根据 npm 官方下载统计，@deployfoundation/foundation-deploy 在 2026/10/12 – 2026/11/10 这 30 天内被下载 3,661 次，日均约 122 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @deployfoundation/foundation-deploy 还在维护吗？

最新版本 0\.2\.55 发布于 2026/10/27（15 天前）；至今共发布 60 个版本，其中过去 12 个月发布了 60 个；首次发布于 2026/09/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

