打包并发布 Podman Desktop 扩展
要让用户可以从目录中安装您的扩展,请将您的扩展推送到 Open Container Initiative (OCI) 镜像仓库。推送扩展后,将扩展详细信息添加到目录仓库中的podman-desktop-catalog/static/api/extensions.json
文件。
先决条件
-
扩展成功构建。请参阅开发 Podman Desktop 扩展和创建扩展。
-
所有运行时依赖项都在最终二进制文件中。
-
一个用于发布的 OCI 镜像仓库,例如
quay.io/username/my-extension
。 -
(可选)OCI 镜像仓库是公开的,任何人都可以获取镜像。
步骤:将您的扩展推送到 OCI 仓库
-
创建并编辑
Containerfile
文件。 -
使用 scratch 镜像。扩展不需要运行时
FROM scratch
-
对
OCI
镜像应用强制性的 Podman Desktop 元数据LABEL org.opencontainers.image.title="My extension" \
org.opencontainers.image.description="Example of extension" \
org.opencontainers.image.vendor="podman-desktop" \
io.podman-desktop.api.version=">= 0.12.0"io.podman-desktop.api.version=">= 0.12.0"
设置扩展运行所需的最低 Podman Desktop 版本。 -
将扩展组件,包括元数据、图标和生产二进制文件,复制到镜像内的
/extension
文件夹中COPY package.json /extension/
COPY icon.png /extension/
COPY dist /extension/dist -
构建镜像
$ podman build -t quay.io/username/my-extension .
-
将镜像和清单推送到 OCI 镜像仓库
$ podman push quay.io/username/my-extension
添加特定于平台的文件
您可能希望将系统原生可执行文件添加到扩展镜像中,以便扩展可以执行它。
与扩展代码(转译为 JavaScript)可在任何平台上执行不同,您需要准备几个 OCI 镜像,每个平台(操作系统和架构)一个,以支持您的扩展。
为此,您需要创建
- 每个平台一个 Containerfile,或者一个带有参数的通用 Containerfile,用于为每个平台创建一个镜像。
- 一个清单,用于引用上一步创建的所有镜像。
您需要与用户共享的用于安装扩展的 URL 是清单的 URL。
如果清单不包含用户平台的镜像,Podman Desktop 将安装 Linux 镜像(根据用户平台的架构为 amd64 或 arm64)。
您可以利用Buildah Build action来构建此清单。
步骤:将扩展发布到目录
- Fork 并克隆Podman Desktop 目录仓库。
- Checkout 一个新分支。
- 将许可证、readme 文件和扩展图标添加到
podman-desktop-catalog/static/api/extensions/podman-desktop/
目录。 - 编辑
extensions.json
文件以添加您的扩展详细信息。这里是一个将名为 Minkibe 的 Podman Desktop 扩展添加到目录的示例。 - 使用您的更改创建 PR。
- 合并您的 PR,使您的扩展在目录中可用。
Podman Desktop 具有内置的自动更新机制,可使用新添加的扩展刷新目录列表。