Skip to main content
版本: 0.6.0

如何在 github action 中使用 kpm 发布您的 KCL 包

kpm 是一个用于管理 kcl 包的工具。本文将指导您如何在 GitHub Action 中使用 kpm 将您的 kcl 包推送到发布到 ghcr.io 中。

下面是一个简单的步骤,指导您如何使用 kpm 将您的 kcl 包推送到 OCI Registry。

步骤 1:安装 kpm

首先,您需要在您的计算机上安装 kpm。您可以按照 kpm 安装文档中的说明进行操作。

步骤 2:创建一个 GitHub 账号

如果您已经有 GitHub 帐号了,您可以选择跳过这一步

注册新的一个 GitHub 账号

步骤 3: 为您的 KCL 包创建一个 GitHub 仓库并进行相关配置

1. 为您的 KCL 程序包准备仓库

您需要为您的 KCL 程序包准备一个 GitHub 仓库。

创建一个 GitHub 仓库

在这个仓库中添加您的 KCL 程序,以仓库 https://github.com/awesome-kusion/catalog.git 为例,

├── .github
│ └── workflows
│ └── push.yaml # github action 文件
├── LICENSE
├── README.md
├── kcl.mod # kcl.mod 将当前仓库内容定义为一个 kcl 包
├── kcl.mod.lock # kcl.mod.lock 是 kpm 自动生成的文件
└── main.k # 您的 KCL 程序

2. 为您的仓库设置 OCI Registry,账户和密码

以 docker.io 为例,您可以为您的仓库设置 secrets REG, REG_ACCOUNTREG_TOKENREG 的值为 docker.ioREG_ACCOUNT 的值为您的 docker.io 账户, REG_TOKEN 为您的 docker.io 登录密码。

为仓库添加 secrets

如果您使用 ghcr.io 作为 Registry, 您需要使用 GitHub token 作为 secrets。

创建一个 GitHub Token

步骤 4: 将您的 KCL 包添加到仓库中并编写 github action workflow

为这个仓库添加 github action 文件 .github/workflows/push.yml,内容如下:

name: KPM Push Workflow

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Set up Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19

- name: Install kpm
run: go install kcl-lang.io/kpm@latest

- name: Login and Push
env:
# 通过环境变量指定 OCI Registry 和账户
KPM_REG: ${{ secrets.REG }}
KPM_REPO: ${{ secrets.REG_ACCOUNT }}
# kpm login 时使用 secrets.REG_TOKEN
run: kpm login -u ${{ secrets.REG_ACCOUNT }} -p ${{ secrets.REG_TOKEN }} ${{ secrets.REG }} && kpm push

- name: Run kpm project from oci registry
run: kpm run oci://${{ secrets.REG }}/${{ secrets.REG_ACCOUNT }}/catalog --tag 0.0.1