chore: remove CI/CD and document local development

This commit is contained in:
2026-11-10 15:17:47 +08:00
parent 303c823eb0
commit e0eff7755f
12 changed files with 41 additions and 190 deletions
+6 -9
View File
@@ -9,19 +9,16 @@ when official crates.io is unavailable. Defaults remain the official source.
The local bundle has identifier `com.entroia.tessera` and can be opened from Finder.
It is a development app, without a distribution signature or notarization.
The CI workflow only checks this script's shell syntax on Linux; native bundle
construction and window presentation are verified on macOS.
Check shell syntax with `sh -n scripts/build-macos-app.sh`; native bundle
construction and window presentation are verified locally on macOS.
Return to the [project guide](../README.md).
## Remote verification
## Local verification
[verify-ci.sh](verify-ci.sh) runs only on the Linux ces-control host. It builds the
source-independent [toolchain image](../Dockerfile.ci), mounts the checkout
read-only and retains Cargo downloads/build output in project-specific Docker
volumes. CI_CACHE_SCOPE selects main/manual or a PR cache namespace. It acquires
a host lock and removes its own container on interruption; cached volumes survive.
See [workflow details](../.gitea/workflows/README.md) for invalidation and triggers.
Build and validate with the native Rust toolchain. The project has no CI/CD
workflow or Docker build image. See the [validation commands](../README.md#validation)
for formatting, tests and Clippy; window behavior is checked in the running app.
## UML 文档渲染
-27
View File
@@ -1,27 +0,0 @@
#!/bin/sh
# Run only on the Linux CI host with Docker; never bake source into cache images.
set -eu
scope=${CI_CACHE_SCOPE:-manual}
case "$scope" in *[!a-zA-Z0-9_-]*|'') echo "Invalid cache scope" >&2; exit 1;; esac
root=$(pwd -P)
image=endorphin-tessera-gui-ci:rust-1.91.1
prefix=tessera-ci-rust-1-91-1-$scope
# Serialize access to each target directory, including manually started checks.
exec 9>"/tmp/$prefix.lock"
flock 9
sh -n scripts/build-macos-app.sh
# Empty context: only the toolchain and OS dependencies become image layers.
docker build -t "$image" - < Dockerfile.ci
name="$prefix-${GITHUB_RUN_ID:-$$}"
cleanup() { docker rm -f "$name" >/dev/null 2>&1 || true; }
trap cleanup EXIT
trap 'exit 130' INT
trap 'exit 143' TERM
docker run --name "$name" --rm --init \
--mount "type=bind,src=$root,dst=/build,readonly" \
--mount "type=volume,src=$prefix-target,dst=/cargo-target" \
--mount "type=volume,src=$prefix-registry,dst=/usr/local/cargo/registry" \
--mount "type=volume,src=$prefix-git,dst=/usr/local/cargo/git" \
"$image" &
run_pid=$!
wait "$run_pid"