kcl-lang.io/kpm@v0.8.7-0.20240520061008-9fc4c5efc8c7/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" />