Skip to content

Сборка и публикация пакетов через CI/CD

Forgejo CI позволяет автоматически собирать .rpm-пакеты из исходного кода проектов и публиковать их в реестр пакетов.

Сборка пакетов может быть выполнена с использованием инструмента hasherc. Чтобы избежать необходимости устанавливать его при каждом запуске, рекомендуется использовать образ actions/runner/hasherc в качестве раннера — он содержит предустановленный hasherc.

Для сборки пакетов можно использовать действие actions/build-rpm-action.

Публикация пакетов возможна с использованием действия actions/upload-rpm-action, которое отправляет готовые .rpm-файлы в реестр Forgejo (ALT Linux Space).

Пример: публикация в текущем репозитории

Этот подход удобен для публикации пакетов в репозиторий вашего пользователя (например, username/packages).

yaml
# .forgejo/workflows/build.yml
on:
  workflow_dispatch:
  push:
    branches:
      - master

env:
  HOST: altlinux.space
  APP_NAME: {app-name}

jobs:
  build:
    runs-on: alt-sisyphus
    container:
      image: altlinux.space/actions/runner/hasherc:sisyphus

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - uses: actions/build-rpm-action@main
        name: Build RPMs

      - name: Remove debuginfo RPMs
        run: |
          find -L ~/.cache/hasherc/${{ env.APP_NAME }}/out/RPMS -type f -name '*debuginfo*.rpm' -delete
        
      - uses: actions/upload-rpm-action@main
        name: Upload RPMs
        with:
          directory: ~/.cache/hasherc/${{ env.APP_NAME }}/out/RPMS
          token: ${{ secrets.TOKEN }}

📦 Результат:

  • Пакет загружается в реестр пакетов текущего пользователя.
  • Доступен по адресу:
    https://altlinux.space/{username}/-/packages/alt/{project-name}/{version}-{release}

Пример: публикация в общий репозиторий

Подходит для публикации RPM-пакетов в один централизованный репозиторий (например, my-org/packages).

yaml
# .forgejo/workflows/build.yml
on:
  workflow_dispatch:
  push:
    branches:
      - master

env:
  HOST: altlinux.space
  APP_NAME: {app-name}

jobs:
  build:
    runs-on: alt-sisyphus
    container:
      image: altlinux.space/actions/runner/hasherc:sisyphus

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - uses: actions/build-rpm-action@main
        name: Build RPMs

      - name: Remove debuginfo RPMs
        run: |
          find -L ~/.cache/hasherc/${{ env.APP_NAME }}/out/RPMS -type f -name '*debuginfo*.rpm' -delete
        
      - uses: actions/upload-rpm-action@main
        name: Upload RPMs
        with:
          directory: ~/.cache/hasherc/${{ env.APP_NAME }}/out/RPMS
          token: ${{ secrets.TOKEN }}
          user: my-org

📦 Результат:

  • Пакет загружается в репозиторий my-org/packages.
  • Пользователи ALT Linux могут подключать этот источник и устанавливать пакеты через apt-rpm.

🚧 В разработке

К сожалению, эта страница ещё находится в разработке. Если вы не нашли нужную информацию, вы можете воспользоваться меню навигации на боковой панели, чтобы начать чтение.