Skip to content
This repository has been archived by the owner on Apr 29, 2024. It is now read-only.

Latest commit

 

History

History
87 lines (58 loc) · 3.2 KB

push_by_github_action-zh.md

File metadata and controls

87 lines (58 loc) · 3.2 KB

如何在 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.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