refactor(repo): flatten structure — remove compose/ and runner-image/ subdirs #1
Labels
No labels
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: slaid098/forgejo-infra#1
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
Репозиторий
forgejo-infraхранит воспроизводимую конфигурацию Forgejo + CI runner. Текущая структура имеет две подпапки (compose/с 2 файлами,runner-image/с 1 файлом), которые добавляют вложенность без ценности:compose/содержит 2 файла (docker-compose.yml,runner-config.yaml), которыеsetup.shсразу же распаковывает в root на деплой-хосте. Папка живёт только в репо, никогда на диске какcompose/.docker-compose.ymlиспользует./app_data/...относительные пути, которые работают только если файл лежит в корне, а не вcompose/. Если кто-то запуститdocker compose -f compose/docker-compose.yml up, волюмы резолвятся не туда — это footgun.runner-image/содержит 1 файл (DockerfileбезCOPYинструкций). Build-context не нужен — можно top-levelDockerfile.ubuntu-latest), аdocker-compose.ymlиrunner-config.yaml— 3. Непоследованность..gitignore— есть риск случайно закоммитить.envс реальными секретами.Всего 6 файлов в репо — подпапки для 6 файлов избыточны.
Задача
Сделать flat структуру: все файлы в root, ноль подпапок.
Целевая структура:
Контракты
git mvдля переименований, не delete+create).setup.shпосле рефактора: копируетdocker-compose.yml,config.yaml(→app_data/runner/config.yaml),Dockerfileв deploy dir. Больше не копирует изcompose/.docker-compose.yml: содержимое БЕЗ изменений (он уже использует./app_data/...— это правильно для root-расположения).config.yaml(былrunner-config.yaml): содержимое БЕЗ изменений (включая boilerplate — сознательное решение для совместимости с act_runner).Dockerfile: содержимое БЕЗ изменений..gitignore: добавить.env(защита от случайного коммита секретов).compose/иrunner-image/префиксы), привести runner labels к 3 (как в compose/config), убрать упоминание подпапок.Инварианты
docker compose up -dиз корня клона репо работает (послеsetup.shили напрямую если есть.env).docker build -t git.slaid098.dev/slaid098/runner:latest .из корня клона работает (Dockerfile безCOPY— build context не важен).git clone https://git.slaid098.dev/slaid098/forgejo-infra.git→ все 7 файлов (6 + .gitignore) в root.setup.shисполняемый (chmod +x).Граничные случаи
compose/docker-compose.yml— их деплой сломается. Это OK — репо молодое (2 коммита), внешних потребителей нет.runner-config.yaml→config.yamlrename: проверить, чтоsetup.shи README ссылаются на новое имя..gitignoreне должен исключать.env.example(только.env).Влияние на связанные компоненты
setup.sh— упрощается (меньшеcpкоманд, нет распаковкиcompose/)./root/dockers/forgejo/. Этот issue меняет только репо, не live-сервер.Вне scope
config.yamlboilerplate (оставляем как есть — сознательное решение для совместимости).forgejo-infraрепо.docker-compose.yml,config.yaml,Dockerfile.Критерии приемки
git clone https://git.slaid098.dev/slaid098/forgejo-infra.git && ls forgejo-infra/показывает 7 файлов в root (без подпапок):.env.example,.gitignore,README.md,setup.sh,docker-compose.yml,config.yaml,Dockerfile.git log --oneline --follow config.yamlпоказывает историю отrunner-config.yaml(git mv сохраняет историю).setup.shне содержит ссылок наcompose/илиrunner-image/— только root-файлы..gitignoreсодержит.env, НЕ содержит.env.example.bash setup.sh(dry-run или на тестовом сервере) не падает наcp/mv.