github.com/KusionStack/kpm@v0.8.4-0.20240326033734-dc72298a30e5/docs/kpm_oci-zh.md (about) 1 # 使用 OCI Registries 2 3 从 kpm v0.2.0 版本开始,kpm 支持通过 OCI Registries 保存和分享 KCL 包。 4 5 ## kpm registry 6 7 kpm 支持使用 OCI Registry 保存和分享 KCL 包,kpm 默认使用 ghcr.io 保存 KCL 包。 8 9 kpm 默认 registry - [https://github.com/orgs/KusionStack/packages](https://github.com/orgs/KusionStack/packages) 10 11 可以在 kpm 的配置文件中调整 Registry 的地址和仓库名。kpm 的配置文件位于 `$KCL_PKG_PATH/.kpm/config.json`, 如果没有设置环境变量 `KCL_PKG_PATH` 的值,则默认保存在 `$HOME/.kcl/kpm/.kpm/config.json`。 12 13 配置文件的默认内容如下: 14 15 ```json 16 { 17 "DefaultOciRegistry":"ghcr.io", 18 "DefaultOciRepo":"kcl-lang" 19 } 20 ``` 21 22 ## 快速开始在 kpm 中使用 OCI Registry 23 24 在接下来的内容中,我们将使用 `localhost:5001` 作为示例 OCI Registry,并且为这个 OCI Registry 添加了一个账户 `test`,密码是 `1234`。 25 26 ### kpm login 27 28 你可以通过以下四种方式使用 `kpm login`。 29 30 #### 1. 使用账户和密码登陆 OCI Registry 31 32 ```shell 33 $ kpm login -u <account_name> -p <password> <oci_registry> 34 Login succeeded 35 ``` 36 37 <img src="./gifs/kpm_login.gif" width="600" align="center" /> 38 39 #### 2. 使用账户登陆 OCI Registry,并且交互式输入密码 40 41 ```shell 42 $ kpm login -u <account_name> <oci_registry> 43 Password: 44 Login succeeded 45 ``` 46 47 <img src="./gifs/kpm_login_with_pwd.gif" width="600" align="center" /> 48 49 #### 3. 交互式输入账户和密码登陆 OCI Registry 50 51 ```shell 52 $ kpm login <oci_registry> 53 Username: <account_name> 54 Password: 55 Login succeeded 56 ``` 57 58 <img src="./gifs/kpm_login_with_both.gif" width="600" align="center" /> 59 60 ### kpm logout 61 62 你可以使用 `kpm logout` 退出一个 OCI Registry。 63 64 ```shell 65 kpm logout <registry> 66 ``` 67 68 <img src="./gifs/kpm_logout.gif" width="600" align="center" /> 69 70 ### kpm push 71 72 你可以在 kcl 包的根目录下使用 `kpm push` 命令将 kcl 包上传到一个 OCI Registry。 73 74 ```shell 75 # 创建一个新的 kcl 包。 76 $ kpm init <package_name> 77 # 进入 kcl 包的根目录 78 $ cd <package_name> 79 # 将 kcl 包上传到一个 oci registry 80 $ kpm push 81 ``` 82 83 <img src="./gifs/kpm_push.gif" width="600" align="center" /> 84 85 你也可以在 `kpm push` 命令中指定 OCI registry 的 url。 86 87 ```shell 88 # 创建一个新的 kcl 包。 89 $ kpm init <package_name> 90 # 进入 kcl 包的根目录 91 $ cd <package_name> 92 # 将 kcl 包上传到一个 oci registry 93 $ kpm push <oci_url> 94 ``` 95 96 <img src="./gifs/kpm_push_with_url.gif" width="600" align="center" /> 97 98 ### kpm pull 99 100 你可以使用 `kpm pull` 从默认的 OCI registry 中下载一个 kcl 包。kpm 会自动从 `kpm.json` 中的 OCI registry 中寻找 kcl 包。 101 102 ```shell 103 kpm pull <package_name>:<package_version> 104 ``` 105 106 <img src="./gifs/kpm_pull.gif" width="600" align="center" /> 107 108 或者,你也可以从指定的 OCI registry url 中下载一个 kcl 包。 109 110 ```shell 111 kpm pull --tag <kcl_package_version> <oci_url> 112 ``` 113 114 <img src="./gifs/kpm_pull_with_url.gif" width="600" align="center" /> 115 116 ### kpm run 117 118 kpm 可以直接通过 OCI 的 url 编译 kcl 包。 119 120 ```shell 121 kpm run --tag <kcl_package_version> <oci_url> 122 ``` 123 124 <img src="./gifs/kpm_run_oci_url.gif" width="600" align="center" /> 125 126 另外,你也可以通过 `kpm run` 直接使用本地的 kcl 包。 127 128 ```shell 129 kpm run <oci_ref> 130 ``` 131 132 <img src="./gifs/kpm_run_oci_ref.gif" width="600" align="center" />