# nakolenke debian packages Репозиторий для сборки и публикации `.deb`-пакетов в [Gitea Package Registry](https://git.nakolenke.org/nakolenke-pub/-/packages). ## Структура ``` repo/ ├── .gitea/workflows/ │ └── build-packages.yml # CI/CD пайплайн ├── v2ray/ │ ├── Makefile # параметры пакета │ ├── nfpm.yaml # конфиг сборки .deb │ └── scripts/ │ ├── env.sh # установка зависимостей │ ├── download.sh # скачивание артефактов │ ├── build.sh # сборка .deb через nfpm │ └── publish.sh # публикация в registry └── <другой пакет>/ └── ... ``` ## Добавление нового пакета Создать директорию с именем пакета и следующими файлами: **`Makefile`** — параметры сборки: ```makefile VERSION = 1.2.3 IMAGE = debian:bookworm-slim # docker-образ для сборки STEPS = env download build publish # этапы, отсутствующий скрипт — пропускается ``` **`nfpm.yaml`** — конфигурация пакета, переменная `${VERSION}` подставляется автоматически из окружения. **`scripts/`** — скрипты выполняются последовательно внутри docker-контейнера (`IMAGE` из Makefile). Каждый скрипт получает переменные окружения: | Переменная | Описание | |---|---| | `PACKAGE` | имя пакета (имя директории) | | `VERSION` | версия из Makefile | | `G_URL` | базовый URL Gitea | | `G_OWNER` | owner (org или user) | | `G_REPO` | имя репозитория | | `G_TOKEN` | токен публикации (из secrets) | Рабочая директория внутри контейнера — `/pkg`. ## Запуск **Actions → Build & Publish Packages → Run workflow** - оставить поле пустым — собираются все пакеты - указать через запятую — только выбранные: `v2ray,xray` ## Подключение apt-репозитория ```sh curl -fsSL "https://git.nakolenke.org/api/packages/nakolenke-pub/debian/repository.key" \ | gpg --dearmor -o /etc/apt/keyrings/nakolenke.gpg echo "deb [signed-by=/etc/apt/keyrings/nakolenke.gpg] \ https://git.nakolenke.org/api/packages/nakolenke-pub/debian bookworm main" \ > /etc/apt/sources.list.d/nakolenke.list apt-get update ``` ## Secrets и Variables Настраиваются в **Settings → Secrets / Variables → Actions**: | Имя | Тип | Описание | |---|---|---| | `G_TOKEN` | secret | токен с правом package:write | | `G_URL` | variable | `https://git.nakolenke.org` | | `G_OWNER` | variable | `nakolenke-pub` | | `G_REPO` | variable | имя репозитория |