github.com/KusionStack/kpm@v0.8.4-0.20240326033734-dc72298a30e5/docs/push_by_github_action-zh.md (about) 1 # 如何在 github action 中使用 kpm 发布您的 KCL 包 2 3 [kpm](https://github.com/KusionStack/kpm) 是一个用于管理 kcl 包的工具。本文将指导您如何在 GitHub Action 中使用 kpm 将您的 kcl 包推送到发布到 ghcr.io 中。 4 5 下面是一个简单的步骤,指导您如何使用 kpm 将您的 kcl 包推送到 OCI Registry。 6 7 ## 步骤 1:安装 kpm 8 9 首先,您需要在您的计算机上安装 kpm。您可以按照 [kpm 安装文档](https://kcl-lang.io/docs/user_docs/guides/package-management/installation)中的说明进行操作。 10 11 ## 步骤 2:创建一个 GitHub 账号 12 13 如果您已经有 GitHub 帐号了,您可以选择跳过这一步 14 15 [注册新的一个 GitHub 账号](https://docs.github.com/zh/get-started/signing-up-for-github/signing-up-for-a-new-github-account) 16 17 ## 步骤 3: 为您的 KCL 包创建一个 GitHub 仓库并进行相关配置 18 19 ### 1. 为您的 KCL 程序包准备仓库 20 您需要为您的 KCL 程序包准备一个 GitHub 仓库。 21 22 [创建一个 GitHub 仓库](https://docs.github.com/zh/get-started/quickstart/create-a-repo) 23 24 25 在这个仓库中添加您的 KCL 程序,以仓库 https://github.com/awesome-kusion/catalog.git 为例, 26 27 ```bash 28 ├── .github 29 │ └── workflows 30 │ └── push.yaml # github action 文件 31 ├── LICENSE 32 ├── README.md 33 ├── kcl.mod # kcl.mod 将当前仓库内容定义为一个 kcl 包 34 ├── kcl.mod.lock # kcl.mod.lock 是 kpm 自动生成的文件 35 └── main.k # 您的 KCL 程序 36 ``` 37 38 ### 2. 为您的仓库设置 OCI Registry,账户和密码 39 40 以 docker.io 为例,您可以为您的仓库设置 secrets `REG`, `REG_ACCOUNT` 和 `REG_TOKEN`。`REG` 的值为 `docker.io`,`REG_ACCOUNT` 的值为您的 docker.io 账户, `REG_TOKEN` 为您的 `docker.io` 登录密码。 41 42 [为仓库添加 secrets](https://docs.github.com/zh/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) 43 44 如果您使用 `ghcr.io` 作为 `Registry`, 您需要使用 GitHub token 作为 secrets。 45 46 [创建一个 GitHub Token](https://docs.github.com/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#personal-access-tokens-classic) 47 48 49 ## 步骤 4: 将您的 KCL 包添加到仓库中并编写 github action workflow 50 51 为这个仓库添加 github action 文件 `.github/workflows/push.yml`,内容如下: 52 53 ```yaml 54 name: KPM Push Workflow 55 56 on: 57 push: 58 branches: 59 - main 60 61 jobs: 62 build: 63 runs-on: ubuntu-latest 64 steps: 65 - name: Checkout 66 uses: actions/checkout@v2 67 68 - name: Set up Go 1.21 69 uses: actions/setup-go@v2 70 with: 71 go-version: 1.21 72 73 - name: Install kpm 74 run: go install kcl-lang.io/kpm@latest 75 76 - name: Login and Push 77 env: 78 # 通过环境变量指定 OCI Registry 和账户 79 KPM_REG: ${{ secrets.REG }} 80 KPM_REPO: ${{ secrets.REG_ACCOUNT }} 81 # kpm login 时使用 secrets.REG_TOKEN 82 run: kpm login -u ${{ secrets.REG_ACCOUNT }} -p ${{ secrets.REG_TOKEN }} ${{ secrets.REG }} && kpm push 83 84 - name: Run kpm project from oci registry 85 run: kpm run oci://${{ secrets.REG }}/${{ secrets.REG_ACCOUNT }}/catalog --tag 0.0.1 86 87 ```