跳转到主内容

打包并发布 Podman Desktop 扩展

要让用户可以从目录中安装您的扩展,请将您的扩展推送到 Open Container Initiative (OCI) 镜像仓库。推送扩展后,将扩展详细信息添加到目录仓库中的podman-desktop-catalog/static/api/extensions.json文件。

先决条件

  • 扩展成功构建。请参阅开发 Podman Desktop 扩展创建扩展

  • 所有运行时依赖项都在最终二进制文件中。

  • 一个用于发布的 OCI 镜像仓库,例如quay.io/username/my-extension

  • (可选)OCI 镜像仓库是公开的,任何人都可以获取镜像。

步骤:将您的扩展推送到 OCI 仓库

  1. 创建并编辑Containerfile文件。

  2. 使用 scratch 镜像。扩展不需要运行时

    FROM scratch
  3. 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 版本。

  4. 将扩展组件,包括元数据、图标和生产二进制文件,复制到镜像内的/extension文件夹中

    COPY package.json /extension/
    COPY icon.png /extension/
    COPY dist /extension/dist
  5. 构建镜像

    $ podman build -t quay.io/username/my-extension .
  6. 将镜像和清单推送到 OCI 镜像仓库

    $ podman push quay.io/username/my-extension

添加特定于平台的文件

您可能希望将系统原生可执行文件添加到扩展镜像中,以便扩展可以执行它。

与扩展代码(转译为 JavaScript)可在任何平台上执行不同,您需要准备几个 OCI 镜像,每个平台(操作系统和架构)一个,以支持您的扩展。

为此,您需要创建

  • 每个平台一个 Containerfile,或者一个带有参数的通用 Containerfile,用于为每个平台创建一个镜像。
  • 一个清单,用于引用上一步创建的所有镜像。

您需要与用户共享的用于安装扩展的 URL 是清单的 URL。

如果清单不包含用户平台的镜像,Podman Desktop 将安装 Linux 镜像(根据用户平台的架构为 amd64 或 arm64)。

您可以利用Buildah Build action来构建此清单。

步骤:将扩展发布到目录

  1. Fork 并克隆Podman Desktop 目录仓库
  2. Checkout 一个新分支。
  3. 将许可证、readme 文件和扩展图标添加到podman-desktop-catalog/static/api/extensions/podman-desktop/目录。
  4. 编辑extensions.json文件以添加您的扩展详细信息。这里是一个将名为 Minkibe 的 Podman Desktop 扩展添加到目录的示例。
  5. 使用您的更改创建 PR。
  6. 合并您的 PR,使您的扩展在目录中可用。

Podman Desktop 具有内置的自动更新机制,可使用新添加的扩展刷新目录列表。

其他资源