kpm — инструмент для управления пакетами kcl. В этой статье вы узнаете, как использовать kpm в GitHub Action для отправки пакета kcl в реестр OCI.

Шаг 1: Установите KPM

Сначала вам необходимо установить KPM на свой компьютер. Вы можете следовать документу по установке kpm.

Шаг 2. Создайте учетную запись GitHub

Если у вас уже есть учетная запись GitHub, вы можете пропустить этот шаг.

Зарегистрируйте новую учетную запись GitHub

Шаг 3. Создайте репозиторий GitHub для вашего пакета KCL.

1. Подготовьте репозиторий GitHub для вашего пакета KCL.

Вам необходимо подготовить репозиторий GitHub для вашего пакета KCL.

Создать репозиторий GitHub

В этот репозиторий добавьте свою программу KCL, в качестве примера возьмите репозиторий https://github.com/awesome-kusion/catalog.git,

├── .github
│   └── workflows
│       └── push.yaml # github action workflow
├── LICENSE
├── README.md
├── kcl.mod # kcl.mod to define your kcl package
├── kcl.mod.lock # kcl.mod.lock generated by kpm
└── main.k # Your KCL program

2. Установите реестр OCI, учетную запись и пароль для вашего репозитория Github.

Возьмем, к примеру, docker.io. Вы можете установить секреты REG, REG_ACCOUNT и REG_TOKEN для своего репозитория. Значение REG равно docker.io, значение REG_ACCOUNT — это ваша учетная запись docker.io, а значение REG_TOKEN — ваш пароль для входа в систему docker.io.

Добавить секреты в хранилище

Если вы используете ghcr.io как Registry, вам необходимо использовать токен GitHub в качестве секретов.

Создайте токен GitHub

Шаг 4. Добавьте пакет KCL в репозиторий и напишите рабочий процесс действий на GitHub.

Добавьте файл действий github .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:
          KPM_REG: ${{ secrets.REG }}
          KPM_REPO: ${{ secrets.REG_ACCOUNT }}
        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