From 8e66b6d7410b5952b8a6d3078ac63fac7005e223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A1=E5=8F=A3=E6=B5=AA=E4=BA=BA?= Date: Sun, 18 Oct 2026 21:31:03 +0800 Subject: [PATCH] docs: move trusted CI runner from NAS to Server --- .github/workflows/verify.yml | 4 ++-- SHA256SUMS | 6 +++--- docs/BUILDING.md | 13 ++++++++++++- docs/PUBLICATION.md | 2 +- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index ad202d1..69cbd0e 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: jobs: verify: - # The NAS Docker runner must never execute code from external forks. + # The self-hosted Docker runner must never execute code from external forks. if: github.server_url != 'https://github.com' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) runs-on: ubuntu-latest env: @@ -41,4 +41,4 @@ jobs: fi # Production moved to Ubuntu Server. Release manually with scripts/server-release.py; -# the shared NAS runner performs isolated verification only. +# the shared Server runner performs isolated verification only. diff --git a/SHA256SUMS b/SHA256SUMS index f187b93..322961e 100644 --- a/SHA256SUMS +++ b/SHA256SUMS @@ -2,7 +2,7 @@ c2792b2c75880ff09822804632b1b3b6dd6190b38841b8c3567bb1b7e7b59a8c .dockerignore d20031a8e861a0f3e19b7750ddb53bc84c480c469c44a70ecdf8261ec05431c0 .env.example 0c7f4585d62a8d35bfc22e0bebdf7a479a179122b2b092bfe434e3038cddd3d5 .gitattributes b45d35d737f119a70bf40cb1f9626ff80772ed7913cb35f6e9b870d6ada01a15 .github/workflows/community.yml -d3ad09bdc5dc60c41a774e1cad43f3e3f8ae5c851303ae6ec2aac030392a2939 .github/workflows/verify.yml +2c49cb94db2c7679d5fdb0da4b67a4b90d5f00c3c76f7f0d0226938eeb75ef04 .github/workflows/verify.yml 3931cc314019760a582e0914e2d9c0f3b862a004d0a30d374900edcad5f599e5 .gitignore 4b4ed4926a350cbeb71436541b4566e4ba7d2494ac95236b88827a9f5dd171c2 CONTRIBUTING.md c6fc984a1ca46cbd3e06de4591e41d21e4eb592416385d4000ade8fd570aad0c Dockerfile @@ -21,13 +21,13 @@ fd53125a5359dcae1d81e95b8447aac755270f9aeb354d3e1140d7fccb57c42e deploy/docker- 4464545a9d91bbc9fff9cd9941db63f44fa61120caca426687d1ed06635cc3e6 deploy/organized-photos-source.json f78d6c3d40e6c5246601bb99c2b46eef91e883a8f83841d85c925394708af0c0 docker-compose.yml 30d3e705870ebb012ce122bd7d8f95192d86664c4d2bb45a3169c86988fbaf72 docs/AUTOMATIC_COLLAGE.md -e897b531b5ec4c2411fb11c4ea38808a6305e066782fe6112953f1cf63cef78f docs/BUILDING.md +27a8e9f33459cdb4e873fc14e965c40557324707c10a6e6f8567c81bfe457de7 docs/BUILDING.md d9f07164c75c757e85f4ace2b55deaf82b8b904216c5222be6c0e3ab7b28cb36 docs/EXTENSIONS.md 1d8c5f79eff3115b1cd13d8f63fff1332b80d1fe1bec6b0f2713b5f80b0cbf67 docs/KOKONNA_RECOVERY.md 0fe1896a53cef4cfd2e380a0b979eceda493733082a9b56c3d7e89e7f62a65b3 docs/NAS.md 3280bddcbe2d2721bb7efeb0eb2ec03d9d5ef867c69f3e70066b69f1ad5926e2 docs/PHOTO_SOURCES.md edf44436fd044561539c48480c481e66c1a38164f51ba5226cde04c756f7bacb docs/PHOTO_SOURCE_CONNECTIONS.md -4b00d08eb5a2425b205af13b87f9be04dd6870a734b42463a3e075658039dac9 docs/PUBLICATION.md +b48f3ab6f28404bb34c188067a832384f4ba290e56912461ef3565528aa157d8 docs/PUBLICATION.md 5fe4641e75e0746929f71256c6ff11116c777cca8d4288ccc2d7aee91bd7a6ac docs/README.md 5eb19e7e4ed1ceddbdf388fd55697e40f1b7ecd9a4fbdf8ab485132cc684dcb2 docs/REAL_DEVICE_TEST.md bfc38b889fa966031e195c3131db1d4a713e0dc35c644e3047c7ed94f2354700 docs/RESEARCH.md diff --git a/docs/BUILDING.md b/docs/BUILDING.md index a4e6f5c..b0bedf9 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -29,6 +29,17 @@ resources and are not runtime mounts or dependencies. ### CI with a host Docker socket +The managed CI runner runs on Ubuntu Server; the NAS no longer executes jobs. +It retains `ubuntu-latest` compatibility and fixed runner/job image digests, +accepts one job at a time, and limits each task container to 4 CPUs and 8 GiB. +The runner's private state resides on the guarded business disk. Its systemd +service checks the mount identity before starting. Registration credentials are +supplied through a temporary file and removed after registration; the daemon +container does not retain the reusable registration token in its environment. +Keep the current runner and job images even when no task is executing: they are +active CI dependencies. Only trusted repository events may reach this runner's +Docker socket; CI does not automatically deploy production or write to frames. + Run `python scripts/ci-compose-verify.py` after loading the build mirror profile. The script derives a temporary Compose document from production settings, with an absolute client-side build context, a UUID project name, a unique CI image @@ -40,7 +51,7 @@ owned `/data` and `/config` directories; the service remains UID/GID 10333. Build contexts are sent by the Docker client, so the job workspace can remain inside the job container. Runtime storage is managed by the daemon; no matching -NAS host `/workspace` directory is needed. HTTP readiness and the unmodified +Docker host `/workspace` directory is needed. HTTP readiness and the unmodified nine-endpoint smoke script run inside the service with `compose exec -T`. Restart is followed by another readiness check and the same smoke test. diff --git a/docs/PUBLICATION.md b/docs/PUBLICATION.md index 1cc975f..ac80db8 100644 --- a/docs/PUBLICATION.md +++ b/docs/PUBLICATION.md @@ -4,7 +4,7 @@ Runtime keys, passwords, sessions, private photos, databases and local `.env` fi must remain outside Git. Examples use documentation-only addresses and identities. Personal deployment reports and screenshots are excluded from public history. -The Gitea NAS Docker runner accepts trusted repository events only. GitHub mirrors +The Gitea Server Docker runner accepts trusted repository events only. GitHub mirrors use the separate community workflow on GitHub-hosted disposable runners, with read-only repository permissions and no deployment configuration. External fork PRs are not executed on this runner; maintainers must review them before copying changes