场地部署
这包给探员一个工具, siteDeploy,它计划向Vercel, Cloudflare Pages, DigitalOcean, Netlify, Heroku, AWS, Linode, Railway 或 Fly.io 部署, 可选域注册和 DNS 设置,并通过一个工具执行器调用其他工具进行操作.
安装
npm install @framers/agentos-ext-tool-site-deploy
同伴依赖 : @framers/agentos 有范围 >=0.10.40。 。 。 .
使用量
import { AgentOS } from '@framers/agentos';
const agentos = await AgentOS.create({
extensionManifest: {
packs: [{ package: '@framers/agentos-ext-tool-site-deploy' }],
},
});
工具
| 工具 | 它会做什么 |
|---|---|
siteDeploy | 部署来自 Git 仓库或本地目录的站点, 并带有可选的自定义域注册和 DNS 配置 . |
siteDeploy 参数
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
source | string | 对 | Git 寄存器 URL, source tarball URL 或 本地目录路径( 参见下表, 每个提供者需要什么) |
cloudProvider | string, enum: (中文(简体) ) vercel, (中文(简体) ), cloudflare, (中文(简体) ), digitalocean, (中文(简体) ), netlify, (中文(简体) ), heroku, (中文(简体) ), aws, (中文(简体) ), linode, (中文(简体) ), railway, (中文(简体) ), flyio | 没有 | 要部署的云提供者( 默认: 自动检测最合适) |
projectName | string | 没有 | 供应商上的工程,站点或应用名称,省略时取自来源. 需要用于 Heroku( 现有应用程序) 和 AWS 上的本地目录( S3 桶) . |
domain | string | 没有 | 自定义配置域( 可选) 。 如果没有登记,将试图通过下列途径进行登记: domainRegistrar。 。 。 . |
domainRegistrar | string, enum: (中文(简体) ) porkbun, (中文(简体) ), namecheap, (中文(简体) ), godaddy, (中文(简体) ), cloudflare | 没有 | 用于域名购买的域名注册员(如果域名尚未注册则需要) |
registrant | object | 没有 | 登记登记登记登记的联系人: firstName, (中文(简体) ), lastName, (中文(简体) ), email, (中文(简体) ), phone, (中文(简体) ), address1, (中文(简体) ), city, (中文(简体) ), state, (中文(简体) ), postalCode, (中文(简体) ), country,可选择 address2 财务报告和审定财务报表 organization。要求注册在 Namecheap 或 GoDaddy . |
framework | string, enum: (中文(简体) ) nextjs, (中文(简体) ), react, (中文(简体) ), vue, (中文(简体) ), svelte, (中文(简体) ), astro, (中文(简体) ), static, (中文(简体) ), node, (中文(简体) ), python, (中文(简体) ), auto | 没有 | 框架/运行时间( 默认: 自动检测) |
envVars | object<string, string> | 没有 | 用于部署的环境变量 |
buildCommand | string | 没有 | 构建命令覆盖 |
outputDirectory | string | 没有 | 输出目录覆盖 |
dryRun | boolean | 没有 | 不执行预览部署计划( 默认: 假) |
页:1
工厂不附加工具执行器. 主机通过一个 SiteDeployTool.setToolExecutor 提供供应商和登记员工具。 如果没有附加回调, 部署失败, 执行器错误 . dryRun 返回一个不调用授权工具的计划.
框架检测检查源 URL 或路径字符串. 掉下来了 static 当没有图案匹配时。 检测出 Nuxt 源 node,因为 Nuxt 默认建立服务器。 自动提供者选择使用Vercel为Next.js,React,Vue和Svelte,Cloudflare为Astro和静态站点,铁路为节点和Python.
为了部署, siteDeploy 将部署工具称为经整理的云包登记册,并附有该工具自己的论据:
| 提供者 | 工具 | 来源需要 | 发送的参数 |
|---|---|---|---|
vercel | vercelDeploy | 图形 URL | gitUrl, (中文(简体) ), projectName, (中文(简体) ), framework (单位:千美元)nextjs 财务报告和审定财务报表 astro 只有凡尔塞能检测其余的事物, buildCommand, (中文(简体) ), outputDirectory, (中文(简体) ), envVars |
cloudflare | cfDeployPages | 图形 URL | gitUrl, (中文(简体) ), projectName, (中文(简体) ), buildCommand, (中文(简体) ), buildOutputDirectory, (中文(简体) ), envVars |
digitalocean | doCreateApp | 图形 URL | name (单位:千美元)projectName 或来源于来源), gitUrl, (中文(简体) ), isStatic, (中文(简体) ), buildCommand, (中文(简体) ), outputDir, (中文(简体) ), envVars |
netlify | netlifyDeploySite | 图形 URL | gitUrl, (中文(简体) ), siteName, (中文(简体) ), buildCommand, (中文(简体) ), publishDirectory, (中文(简体) ), envVars |
heroku | herokuDeployApp | 源归档 URL: a .tar.gz gitHub 文档 /tarball/<ref> URL 或来自 Heroku 源端的签名 URL; 拒绝 Git 仓库 URL | appName (单位:千美元)projectName,要求), sourceUrl, (中文(简体) ), configVars |
aws | git URL 无 | 拒绝: Amplify's CreateApp 需要一个寄存器访问令牌, 它 siteDeploy 不使用; 调用 awsDeployAmplify 与 oauthToken | |
aws | awsDeployS3Site | 已建静态文件本地目录 | bucketName (单位:千美元)projectName,要求), sourceDir (来源与 outputDirectory· ; outputDirectory 需要,除非 framework 实值 static) (中文(简体) ). 一个目录持有 .git, (中文(简体) ), .env 或者说 .env.* 因为水桶是公用的 所以被拒绝了 |
railway | railwayDeployService | GitHub 網址 | repo (单位:千美元)owner/repo, (中文(简体) ), projectName, (中文(简体) ), variables |
linode | 无 | 拒绝 : linodeDeployStackScript 需要 StackScript 代码、 区域、 计划、 图像和根密码 | |
flyio | 无 | 拒绝 : flyDeployApp 运行 Docker 图像 |
提供者的工具无法取用的来源, 需要缺失 projectName,或该工具不接受的选项(buildCommand 例如,在Heroku或Railway上),在任何工具被调用之前都会被拒绝,理由在 error。模拟报告同样的拒绝,并显示该工具及其论据,环境值取而代之.
对于域, siteDeploy 呼叫登记组的工具:
| 书记官长 | 搜索 | 注册( 当有域时) | DNS 数据 |
|---|---|---|---|
porkbun | porkbunSearchDomain 与 domain | porkbunRegisterDomain 与 domain, (中文(简体) ), years: 1 编辑 registrant 字段( Porkbun 使用账户联系人的其他方式) | porkbunConfigureDns 用空添加最高记录 name |
namecheap | namecheapSearchDomain 与 domains | namecheapRegisterDomain 与 domainName, (中文(简体) ), years: 1 财务报告和审定财务报表 registrant | namecheapGetDnsRecords,则 namecheapConfigureDns 加上最高记录 |
godaddy | godaddySearchDomain 与 domain | godaddyRegisterDomain 与 domain, (中文(简体) ), period: 1 财务报告和审定财务报表 contactRegistrant | godaddyConfigureDns 添加 records: [{ type, name: '@', data }] |
cloudflare | cfRegGetDomainInfo 与 domain | 无:Cloudflare的登记员只收转账 | cfRegConfigureDns 添加由完整域命名的记录 |
DNS唱片是部署主机名的CNAME. 当提供者不返回任何记录时(Railway和Heroku在创建时没有记录) domainStatus 实值 pending_dns除了在Vercel和Netlife上 记录点到共同的目标 cname.vercel-dns.com 财务报告和审定财务报表 apex-loadbalancer.netlify.com。 。 。 .
namecheapConfigureDns 替换域的每个主机记录, 因此当当前记录无法读取时, 不尝试 DNS 步骤 domainStatus 实值 pending_dns。当域名已经有一个顶级MX、TXT或一个记录,一个顶级CNAME会打破时,情况也一样(一个CNAME与其他记录相同, RFC 1034 第3.6.2节) (中文(简体) ). 在 Namecheap 或 GoDaddy 有可用的域名没有完整 registrant 未登记,以及 domainStatus 实值 registration_failed。没有登记员,域名设置返回手动 DNS 指令.
部署失败停止域设置 。 返回域注册或 DNS 失败出现于 domainStatus 和步骤结果,同时成功的部署使总体结果得以成功.
许可证
阿帕奇 - 2.0