Restructure repository into output workspace

This commit is contained in:
2025-10-02 14:04:13 -05:00
parent fe0ade1dd9
commit 6e3f60cd9d
420 changed files with 256 additions and 220 deletions

View File

@@ -2,52 +2,53 @@
This repository scaffolds Cloudron packages for Known Element's portfolio. It provides:
- A reusable application template (`templates/cloudron-app`) matching Cloudron packaging conventions.
- Automation helpers in `scripts/` to instantiate per-app scaffolds and run builds inside a dedicated Docker container.
- A curated catalog (`apps/catalog.json`) that maps Known Element issue IDs to upstream projects.
- Documentation under `docs/` to guide packaging, testing, and release workflows.
- A reusable application template (`output/templates/cloudron-app`) matching Cloudron packaging conventions.
- Automation helpers in `output/scripts/` to instantiate per-app scaffolds and run builds inside a dedicated Docker container.
- A curated catalog (`output/apps/catalog.json`) that maps Known Element issue IDs to upstream projects.
- Documentation under `output/docs/` to guide packaging, testing, and release workflows.
## Quick start
```bash
# Build or refresh the devtools image (first run builds automatically)
./run/dev.sh python --version
./output/run/dev.sh python --version
# Generate or refresh a single app scaffold
./run/dev.sh python scripts/new_app.py --slug apache-apisix
./output/run/dev.sh python output/scripts/new_app.py --slug apache-apisix
# Regenerate every scaffold (overwrites existing directories)
./run/dev.sh python scripts/new_app.py --force
./output/run/dev.sh python output/scripts/new_app.py --force
# Lint an app and fail on placeholders
./run/dev.sh python scripts/lint_repo.py --slug apache-apisix --strict
./output/run/dev.sh python output/scripts/lint_repo.py --slug apache-apisix --strict
# Update the status dashboard
./run/dev.sh python scripts/generate_status.py --preserve-timestamp
./output/run/dev.sh python output/scripts/generate_status.py --preserve-timestamp
```
### Packaging shell
```bash
# Build the Cloudron packager image (run when Dockerfile changes)
BUILD=1 ./run/packager.sh
BUILD=1 ./output/run/packager.sh
# Launch an interactive Cloudron packaging shell
./run/packager.sh
./output/run/packager.sh
```
All other development tasks should also use `./run/dev.sh` (pass the desired command after the script). The wrapper will build the devtools image if needed and ensure every command executes inside Docker.
All other development tasks should also use `./output/run/dev.sh` (pass the desired command after the script). The wrapper will build the devtools image if needed and ensure every command executes inside Docker.
## Repository layout
- `apps/` generated app scaffolds and metadata
- `docs/` playbooks and architecture notes
- `docs/CI_CD_GITEA.md` instructions for running CI/CD and publishing images via the Gitea instance
- `docker/devtools/` Docker image that runs scaffolding, linting, and status tooling
- `docker/packager/` Docker image for Cloudron packaging workflows
- `scripts/` helper scripts (scaffolding, tooling entrypoints)
- `templates/` base Cloudron app template
- `collab/` shared workspace for operator/agent collaboration (questions, proposals, plans).
- `output/apps/` generated Cloudron app scaffolds and metadata.
- `output/docs/` playbooks, architecture notes, and status dashboards.
- `output/docker/devtools/` Docker image that runs scaffolding, linting, and status tooling.
- `output/docker/packager/` Docker image for Cloudron packaging workflows.
- `output/run/` wrapper scripts for devtools and packager containers.
- `output/scripts/` helper scripts (scaffolding, tooling entrypoints).
- `output/templates/` base Cloudron app template.
## Application catalog
@@ -118,24 +119,24 @@ Run quality checks via the devtools wrapper:
```bash
# Fail if placeholders remain in the target manifest/start script
./run/dev.sh python scripts/lint_repo.py --slug apache-apisix --strict
./output/run/dev.sh python output/scripts/lint_repo.py --slug apache-apisix --strict
# Refresh docs/APP_STATUS.md without changing the existing timestamp
./run/dev.sh python scripts/generate_status.py --preserve-timestamp
# Refresh output/docs/APP_STATUS.md without changing the existing timestamp
./output/run/dev.sh python output/scripts/generate_status.py --preserve-timestamp
```
Use `./run/packager.sh` whenever you need the Cloudron CLI to build, install, or push packages—it drops you into the dedicated packaging container.
Use `./output/run/packager.sh` whenever you need the Cloudron CLI to build, install, or push packages—it drops you into the dedicated packaging container.
## CI/CD
The workflow `.gitea/workflows/ci.yml` mirrors the same commands by invoking the devtools container inside the runner. To reproduce the pipeline locally, run:
```bash
./run/dev.sh python scripts/lint_repo.py --strict --slug apache-apisix
./run/dev.sh python scripts/generate_status.py --preserve-timestamp
BUILD=1 ./run/packager.sh # optional: rebuild packager image before smoke tests
./output/run/dev.sh python output/scripts/lint_repo.py --strict --slug apache-apisix
./output/run/dev.sh python output/scripts/generate_status.py --preserve-timestamp
BUILD=1 ./output/run/packager.sh # optional: rebuild packager image before smoke tests
```
Once a Gitea Actions runner is available, enable the workflow and it will build `knel/cloudron-devtools`/`knel/cloudron-ci` automatically.
Refer to `docs/PACKAGING_GUIDE.md` and `AGENTS.md` for detailed operating procedures.
Refer to `output/docs/PACKAGING_GUIDE.md` and `AGENTS.md` for detailed operating procedures.