用途
package-usage 是一个 Pulumi 技能,用于追踪 Pulumi 组织内哪些 stack 使用了某个特定 package,以及它们使用的版本。它适用于跨 stack 审计,帮助识别使用过时或无人维护版本的 stack。
主要能力
该技能通过 Pulumi Cloud API 查询数据,使用 pulumi api CLI 子命令,并借助现有的 Pulumi 凭据进行认证,返回 JSON 格式结果。
获取 package 的最新版本
命令:
pulumi api /api/registry/packages -F name={package_name} -F orgLogin={orgName}
说明:
- 需要包含 orgLogin,值为用户的组织名称。
- 省略 -F name=... 可列出组织可见的所有 package,适用于用户未指定具体 package 的情况。
- 响应包含 packages 数组,每个条目有 version 字段(最新版本),以及 name、publisher、source 和 packageStatus。
获取 package 的 stack 使用情况
命令:
pulumi api /api/orgs/{orgName}/packages/usage -F packageName={package_name}
说明:
- 将 {orgName} 替换为上下文中的组织名称、PULUMI_ORG,或向用户询问。
- packageName 为必填项;每次查询一个 package。
响应字段:
- packageName:所查询的 package
- stacks:数组,元素为 {stackName, projectName, version, lastUpdate}
- totalStacks:总数
使用方式
工作流:查找过时的 stack
当用户想知道哪些 stack 使用了某个 package 的过时版本时使用。
- 获取该 package 的最新版本
- 获取该 package 的 stack 使用情况
- 将每个 stack 的版本与最新版本比较,识别过时的 stack
- 使用下方输出格式呈现结果
输出格式
以 Markdown 表格呈现结果,后跟一行汇总:
| Project | Stack | Current Version | Latest Version | Status |
|---|---|---|---|---|
| my-app | dev | 6.40.0 | 6.52.0 | Outdated |
| my-app | prod | 6.52.0 | 6.52.0 | Up-to-date |
2 of 2 stacks checked. 1 outdated.
适用场景
- 跨 stack 审计某个 package 的使用情况
- 识别使用过时版本的 stack
- 识别使用无人维护版本的 stack
限制
超出范围:升级特定 stack。
该技能只识别过时的 stack,本身不执行升级。若要在项目中实际提升 package 版本——编辑 package.json、requirements.txt、pyproject.toml、go.mod 或 Pulumi.yaml,运行 pulumi preview,并协调差异——应移交给 provider-upgrade 技能。