2.2. 将第三方插件打包并发布为动态插件
在导出第三方插件 后,您可以将派生的软件包打包成以下支持的格式之一:
- 开放容器项目(OCI)镜像(推荐)
- TGZ 文件
JavaScript 软件包
重要导出的动态插件软件包必须仅发布到私有 NPM registry。
2.2.1. 使用动态软件包创建 OCI 镜像 复制链接链接已复制到粘贴板!
先决条件
-
已安装
podman或docker。 - 您已导出了第三方动态插件软件包。如需更多信息,请参阅 第 2.1 节 “在 Red Hat Developer Hub 中导出第三方插件”。
流程
-
导航到插件的根目录(而不是
dist-dynamic目录)。 运行以下命令将插件打包到 OCI 镜像中:
打包导出的第三方插件的命令示例
npx @red-hat-developer-hub/cli@latest plugin package --tag quay.io/example/image:v0.0.1
npx @red-hat-developer-hub/cli@latest plugin package --tag quay.io/example/image:v0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上一命令中,
--tag参数指定镜像名称和标签。运行以下命令之一将镜像推送(push)到 registry:
使用 podman 将镜像推送到 registry 的命令示例
podman push quay.io/example/image:v0.0.1
podman push quay.io/example/image:v0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 docker 将镜像推送到 registry 的命令示例
docker push quay.io/example/image:v0.0.1
docker push quay.io/example/image:v0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow package-dynamic-plugins命令的输出提供了插件的路径,可在dynamic-plugin-config.yaml文件中使用。
2.2.2. 使用动态软件包创建 TGZ 文件 复制链接链接已复制到粘贴板!
先决条件
- 您已导出了第三方动态插件软件包。如需更多信息,请参阅 第 2.1 节 “在 Red Hat Developer Hub 中导出第三方插件”。
流程
-
进入
dist-dynamic目录。 运行以下命令来创建
tgz归档:创建
tgz归档的命令示例npm pack
npm packCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用--
json标志从npm pack命令的输出中获取完整性哈希,如下所示:获取
tgz归档的完整性哈希值的命令示例npm pack --json | head -n 10
npm pack --json | head -n 10Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 RHDH 实例可访问的 Web 服务器上托管存档,并在
dynamic-plugin-config.yaml文件中引用其 URL,如下所示:dynamic-plugin-config.yaml文件示例plugins: - package: https://example.com/backstage-plugin-myplugin-1.0.0.tgz integrity: sha512-<hash>plugins: - package: https://example.com/backstage-plugin-myplugin-1.0.0.tgz integrity: sha512-<hash>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来打包插件:
打包动态插件的命令示例
npm pack --pack-destination ~/test/dynamic-plugins-root/
npm pack --pack-destination ~/test/dynamic-plugins-root/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示要使用 OpenShift Container Platform 上的 HTTP 服务器创建插件 registry,请运行以下命令:
在 OpenShift Container Platform 中构建和部署 HTTP 服务器的命令示例
oc project my-rhdh-project oc new-build httpd --name=plugin-registry --binary oc start-build plugin-registry --from-dir=dynamic-plugins-root --wait oc new-app --image-stream=plugin-registry
oc project my-rhdh-project oc new-build httpd --name=plugin-registry --binary oc start-build plugin-registry --from-dir=dynamic-plugins-root --wait oc new-app --image-stream=plugin-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过编辑
dynamic-plugin-config.yaml文件,将 RHDH 配置为使用来自 HTTP 服务器的插件:在 RHDH 中使用打包插件的示例配置
plugins: - package: http://plugin-registry:8080/backstage-plugin-myplugin-1.9.6.tgz
plugins: - package: http://plugin-registry:8080/backstage-plugin-myplugin-1.9.6.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. 使用动态软件包创建 JavaScript 软件包 复制链接链接已复制到粘贴板!
派生的动态插件 JavaScript 软件包不得发布到公共 NPM 注册表。如果需要发布至 NPM 注册表,请使用私有 registry。
先决条件
- 您已导出了第三方动态插件软件包。如需更多信息,请参阅 第 2.1 节 “在 Red Hat Developer Hub 中导出第三方插件”。
流程
-
进入
dist-dynamic目录。 运行以下命令,将软件包发布到您的私有 NPM registry:
将插件软件包发布到 NPM registry 的命令示例
npm publish --registry <npm_registry_url>
npm publish --registry <npm_registry_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示在运行
export命令前,您可以在package.json文件中添加以下内容:package.json文件示例{ "publishConfig": { "registry": "<npm_registry_url>" } }{ "publishConfig": { "registry": "<npm_registry_url>" } }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在导出动态插件后修改
publishConfig,请重新运行plugin export命令,以确保包含正确的配置。