kpm 是一个用于管理 kcl 包的工具。本文将指导您如何在 GitHub Action 中使用 kpm 将您的 kcl 包推送到发布到 ghcr.io 中。
下面是一个简单的步骤,指导您如何使用 kpm 将您的 kcl 包推送到 OCI Registry。
首先,您需要在您的计算机上安装 kpm。您可以按照 kpm 安装文档中的说明进行操作。
如果您已经有 GitHub 帐号了,您可以选择跳过这一步
您需要为您的 KCL 程序包准备一个 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 程序
以 docker.io 为例,您可以为您的仓库设置 secrets REG
, REG_ACCOUNT
和 REG_TOKEN
。REG
的值为 docker.io
,REG_ACCOUNT
的值为您的 docker.io 账户, REG_TOKEN
为您的 docker.io
登录密码。
如果您使用 ghcr.io
作为 Registry
, 您需要使用 GitHub token 作为 secrets。
为这个仓库添加 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.21
uses: actions/setup-go@v2
with:
go-version: 1.21
- 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