Сборка и публикация пакетов через 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
).
# .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
).
# .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
.
🚧 В разработке
К сожалению, эта страница ещё находится в разработке. Если вы не нашли нужную информацию, вы можете воспользоваться меню навигации на боковой панели, чтобы начать чтение.