@deployfoundation/foundation-deploy
应用一个基金会实例的 CDK 应用程序,以及 foundation-deploy,则
一个实例的管道运行.
基金会船只 没有实例文件, 没有公司配置. 一切情况 确定部署——账户、区域、Slack工作空间、GitHub org, 命名前缀, 提供其中的集成—— 生活在 YAML 中 部署的自己的仓库。 此软件包的两半都走这条路 找到那个档案,然后找出剩下的.
CDK 应用程序
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的主机的合成检查应使用什么.
部署工具
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/ 目录和无
默认: 猜测其目标的部署将是向错误部署
账户.
部署释放
# 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 假设在标签推。 顾客来了
开桶的账号列表
数据库和密钥.
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。 。 。 .
出版
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,无
基础检查——这正是一个实例的管道.
测试
bun test packages/infra
他们跑下去 bun test 和其余的回波——没有笑话,没有ts-node. 这个
快取测试弹壳到 cdk synth 对于两个固定装置,所以它需要
工作空间已安装,但没有 AWS 证书和 Docker .
固定是合成的(test/fixtures/: acme 打开每一个整合,
beta 是CodePipeline部署的一个最小实例。 没有真正的公司出现
在这个包裹的任何地方.